文件对话框允许用户选择文件或文件夹,被选择的文件可进行读或写操作。
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class OpenFile(QtGui.QMainWindow): def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Open File') self.textEdit = QtGui.QTextEdit() self.setCentralWidget(self.textEdit) self.statusBar() self.setFocus() exit = QtGui.QAction(QtGui.QIcon('open.png'), 'Open', self) exit.setShortcut('Ctrl+O') exit.setStatusTip('Open new File') self.connect(exit, QtCore.SIGNAL('triggered()'), self.showDialog) menubar = self.menuBar() file = menubar.addMenu('&File') file.addAction(exit) def showDialog(self): filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file', './') file = open(filename) data = file.read() self.textEdit.setText(data) app = QtGui.QApplication(sys.argv) of = OpenFile() of.show() sys.exit(app.exec_())
效果:
我们在本示例程序中显示了一个菜单栏、一个状态栏和一个被设置为中心部件的文本编辑器。其中状态栏的状态信息只有在用户想要打开文件时才会显示。单击菜单栏中的Open选项将弹出文件对话框供用户选择文件。被选择的文件内容将被显示在文本编辑器部件中。
class OpenFile(QtGui.QMainWindow):
……
self.textEdit = QtGui.QTextEdit()
self.setCentralWidget(self.textEdit)
本示例程序时基于QMainWindow窗口部件的,因为我们需要将文本编辑器设置为中心部件(QWidget类没有提供setCentralWidget方法)。无须依赖布局管理器,QMainWindow即可轻松完成配置中心部件的工作(使用setCentralWidget方法)。
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file', './')
该语句将弹出文件对话框。getOpenFileName()方法的第一个字符串参数'Open File'将显示在弹出对话框的标题栏。第二个字符串参数用来指定对话框的工作目录。默认情况下文件过滤器被设置为不过滤任何文件(所有工作目录中的文件/文件夹都会被显示)。
file = open(filename)
data = file.read()
self.textEdit.setText(data)
以上三行语句将读取被选择文件并将其内容显示在文本编译器中。