0%

PyQt4--《十五》文件对话框QFileDialog

该对话框用于文件选择。

QFileDialog的函数

  • getOpenFileName():返回用户所选文件的名字来打开它
  • getSaveFileName():使用用户所选文件的名字来存储文件
  • setacceptMode():决定是打开还是保存,参数是QFileDialog.AcceptOpen和QFileDialog.AcceptSave
  • setFileMode():所选文件的类型,枚举常量有QFileDialog.AnyFile、QFileDialog.ExistingFile、QFileDialog.Directory和QFileDialog.Existingfiles
  • setFilter():仅显示有特定扩展名的文件

QFileDialog的信号

该对话框实际上是其他widget的整合,所以没有自己的信号

栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#-*-coding:utf-8-*-
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class window(QWidget):
def __init__(self, parent=None):
super(window, self).__init__(parent)
self.init()

def init(self):
#创建对象
layout = QVBoxLayout()
self.button1 = QPushButton()
self.label1 = QLabel()
self.button2 = QPushButton()
self.contents = QTextEdit()

#设置属性
self.button1.setText(u"打开并显示图片文件")
self.button2.setText(u"文件对象")
self.label1.setText(u"hello world")

#事件
self.button1.clicked.connect(self.getfile)
self.button2.clicked.connect(self.getfiles)

#添加对象
layout.addWidget(self.button1)
layout.addWidget(self.label1)
layout.addWidget(self.button2)
layout.addWidget(self.contents)
self.setLayout(layout)
self.setWindowTitle(u"文件选择demo")

def getfile(self):
filedata = QFileDialog.getOpenFileName(self,u"打开文件",'c:\\',"Image files (*.jpg *.gif *png)")#打开文件的默认打开盘,限制格式
self.label1.setPixmap(QPixmap(filedata))#显示图片

def getfiles(self):
dlg = QFileDialog()
dlg.setFileMode(QFileDialog.AnyFile)
dlg.setFilter("Text files (*.txt)")
#filenames = QStringList()
if dlg.exec_():
filenames = dlg.selectedFiles()
f = open(filenames[0],"r")
with f :
data = f.read()
self.contents.setText(unicode(data,"utf8"))#解决中文乱码
self.contents.setReadOnly(True)#只读模式

def main():
app = QApplication(sys.argv)
ex = window()
ex.show()
sys.exit(app.exec_())

if __name__ == '__main__':
main()