溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PyQt打開保存對話框的方法和使用詳解

發(fā)布時間:2020-10-11 13:00:12 來源:腳本之家 閱讀:256 作者:一個小學(xué)僧 欄目:開發(fā)技術(shù)

PyQt之打開保存對話框(QFileDialog)的方法和使用

一、控件說明

QFileDialog是用于打開和保存文件的標準對話框,繼承自QDialog類。
QFileDialog在打開文件時使用了文件過濾器,用于顯示指定擴展名的文件,也可以設(shè)置使用QFileDialog打開文件時的起始文件路徑和指定擴展名。

二、QFileDialog類的常用方法

getOpenFileName():

返回用戶所選擇文件的名稱并打開該文件

getSaveFileName():

使用用戶選擇的文件名并保存文件
例:QFileDialog.getOpenFileName(self,‘open file',‘D:\',‘Image files(*.jpg *.png)')

  • 第一個參數(shù)是指定父窗口
  • 第二個參數(shù)是標題
  • 第三個是默認打開目錄,使用.代表當前目錄
  • 第四個是文件擴展名過濾器表示只能顯示擴展名為.jpg和.png的文件

setFileMode():

可以選擇的文件類型,沒舉型常量:
QFileDialog.AnyFile-任何文件
QFileDialog.ExistingFile-已存在的文件
QFileDialog.Directory-文件目錄
QFileDialog.ExistingFiles-已存在的多個文件

setFilter():

設(shè)置過濾器,只顯示過濾器允許的文件類型

三、應(yīng)用舉例

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class filedalogdemo(QWidget):
 def __init__(self,parent=None):
  super(filedalogdemo,self).__init__(parent)
  layout=QVBoxLayout()

  self.btn=QPushButton("加載圖片")
  self.btn.clicked.connect(self.getfile)
  layout.addWidget(self.btn)
  self.le=QLabel("")
  layout.addWidget(self.le)
  self.btn1=QPushButton("加載文本文件")
  self.btn1.clicked.connect(self.getfiles)
  layout.addWidget(self.btn1)
  self.text=QTextEdit()
  layout.addWidget(self.text)
  self.setLayout(layout)
  self.setWindowTitle("File Dialog例子")
 def getfile(self):
  fname,_=QFileDialog.getOpenFileName(self,'打開文件',"D:\\","Image files(*.jpg *.gif)")
  self.le.setPixmap(QPixmap(fname))

 def getfiles(self):
  dlg=QFileDialog()
  dlg.setFileMode(QFileDialog.AnyFile)
  dlg.setFilter(QDir.Files)
  if dlg.exec_():
   filenames=dlg.selectedFiles()
   f=open(filenames[0],'r')
   with f:
    data=f.read()
    self.text.setText(data)
if __name__=="__main__":
 app=QApplication(sys.argv)
 win=filedalogdemo()
 win.show()
 sys.exit(app.exec_())

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI