文件對話框允許用戶選擇文件或文件夾,被選擇的文件可進行讀或寫操作。
#!/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)
以上三行語句將讀取被選擇文件並將其內容顯示在文本編譯器中。
