- PyQt 教程
- PyQt - 首頁
- PyQt - 簡介
- PyQt - 環境配置
- PyQt - Hello World
- PyQt - 主要類
- PyQt - 使用 Qt Designer
- PyQt - 元物件
- PyQt 訊號與槽
- PyQt - 訊號和槽
- PyQt - 支援和訊號
- PyQt - 未繫結和已繫結訊號
- PyQt - 使用 PyQtSignal 建立新的訊號
- PyQt - 連線、斷開和發射訊號
- PyQt - 槽裝飾器
- PyQt - 槽連線
- PyQt 佈局
- PyQt - 佈局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本元件
- PyQt - 基本元件
- PyQt - QLabel 元件
- PyQt - QLineEdit 元件
- PyQt - QPushButton 元件
- PyQt - QRadioButton 元件
- PyQt - QCheckBox 元件
- PyQt - QComboBox 元件
- PyQt - QSpinBox 元件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 元件
- PyQt - QFontComboBox 元件
- PyQt - QDoubleSpinBox 元件
- PyQt - QToolBox 元件
- PyQt - QDialog 類
- PyQt - QMessageBox
- PyQt - 多文件介面
- PyQt - 拖放
- PyQt 繪圖 API
- PyQt - 繪圖 API
- PyQt 資料庫
- PyQt - 資料庫處理
- PyQt 基礎知識
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 類
- PyQt 有用資源
- PyQt - 快速指南
- PyQt - 有用資源
- PyQt - 討論
PyQt - QFileDialog 元件
此元件是一個檔案選擇對話方塊。它允許使用者瀏覽檔案系統並選擇要開啟或儲存的檔案。該對話方塊可以透過靜態函式或呼叫對話方塊物件的 exec_() 函式來呼叫。
QFileDialog 類的靜態函式 (getOpenFileName() 和 getSaveFileName()) 呼叫當前作業系統的原生檔案對話方塊。
還可以應用檔案過濾器以僅顯示指定副檔名的檔案。還可以設定起始目錄和預設檔名。
QFileDialog 類重要的方法和列舉列在下面的表格中:
| 序號 | 方法及描述 |
|---|---|
| 1 |
getOpenFileName() 返回使用者選擇要開啟的檔名 |
| 2 |
getSaveFileName() 使用使用者選擇的檔名儲存檔案 |
| 3 |
setacceptMode() 確定檔案框是充當開啟對話方塊還是儲存對話方塊 QFileDialog.AcceptOpen QFileDialog.AcceptSave |
| 4 |
setFileMode() 可選擇檔案的型別。列舉常量為: QFileDialog.AnyFile QFileDialog.ExistingFile QFileDialog.Directory QFileDialog.ExistingFiles |
| 5 |
setFilter() 僅顯示具有指定副檔名的檔案 |
示例
以下示例演示了呼叫檔案對話方塊的兩種方法。
第一個按鈕透過靜態方法呼叫檔案對話方塊。
fname = QFileDialog.getOpenFileName(self, 'Open file', 'c:\\',"Image files (*.jpg *.gif)")
選定的影像檔案顯示在標籤元件上。第二個按鈕透過在 QFileDialog 物件上呼叫 exec_() 方法來呼叫檔案對話方塊。
dlg = QFileDialog()
dlg.setFileMode(QFileDialog.AnyFile)
dlg.setFilter("Text files (*.txt)")
filenames = QStringList()
if dlg.exec_():
filenames = dlg.selectedFiles()
選定檔案的內容顯示在TextEdit元件中。
f = open(filenames[0], 'r')
with f:
data = f.read()
self.contents.setText(data)
完整程式碼如下:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class filedialogdemo(QWidget):
def __init__(self, parent = None):
super(filedialogdemo, self).__init__(parent)
layout = QVBoxLayout()
self.btn = QPushButton("QFileDialog static method demo")
self.btn.clicked.connect(self.getfile)
layout.addWidget(self.btn)
self.le = QLabel("Hello")
layout.addWidget(self.le)
self.btn1 = QPushButton("QFileDialog object")
self.btn1.clicked.connect(self.getfiles)
layout.addWidget(self.btn1)
self.contents = QTextEdit()
layout.addWidget(self.contents)
self.setLayout(layout)
self.setWindowTitle("File Dialog demo")
def getfile(self):
fname = QFileDialog.getOpenFileName(self, 'Open file',
'c:\\',"Image files (*.jpg *.gif)")
self.le.setPixmap(QPixmap(fname))
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(data)
def main():
app = QApplication(sys.argv)
ex = filedialogdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
以上程式碼產生以下輸出:
廣告