PyQt5是一款流行的Python GUI工具包,QFileDialog是PyQt5提供的一个用于选择文件或目录的小工具,它可以让用户从系统中选择一个或多个文件或目录。下面将详细讲解PyQt5 QFileDialog小工具的使用方法。
1. 安装PyQt5
在使用QFileDialog之前,需要先安装PyQt5。如果还没有安装,可以使用pip进行安装:
pip install PyQt5
2. 导入PyQt5库
在代码中导入PyQt5库:
from PyQt5.QtWidgets import QFileDialog, QApplication
3. 创建QApplication
在使用QFileDialog之前,需要先创建QApplication对象:
app = QApplication([])
4. 打开QFileDialog
使用QFileDialog.getOpenFileName方法打开一个文件选择对话框:
filename, _ = QFileDialog.getOpenFileName(None, 'Open file', '', 'Image files (*.jpg *.gif)')
参数说明:
None
:父窗口,如果是单独的对话框则为NoneOpen file
:对话框的标题''
:对话框的目录,默认为空,即当前目录'Image files (*.jpg *.gif)'
:对话框中展示的文件类型
上述代码会返回两个值:选择的文件路径和文件类型,可以通过“_”忽略掉文件类型:
filename, _ = QFileDialog.getOpenFileName(None, 'Open file', '', 'Image files (*.jpg *.gif)')
print(filename) # 输出选择的文件路径
类似地,可以使用QFileDialog.getOpenFileNames打开多个文件对话框,如下所示:
filenames, _ = QFileDialog.getOpenFileNames(None, 'Open files', '', 'Image files (*.jpg *.gif)')
print(filenames) # 输出选择的文件路径列表
还可以使用QFileDialog.getExistingDirectory方法打开一个目录选择对话框:
dirname = QFileDialog.getExistingDirectory(None, 'Select directory', '')
print(dirname) # 输出选择的目录路径
示例说明
示例1:打开和保存文件
下面是一个用于打开和保存文件的示例代码:
from PyQt5.QtWidgets import QFileDialog, QApplication, QPushButton, QVBoxLayout, QWidget
import os
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
self.btn_open_file = QPushButton('Open file', self)
self.btn_open_file.clicked.connect(self.open_file)
vbox.addWidget(self.btn_open_file)
self.btn_save_file = QPushButton('Save file', self)
self.btn_save_file.clicked.connect(self.save_file)
vbox.addWidget(self.btn_save_file)
self.setLayout(vbox)
self.setWindowTitle('File Dialog Example')
self.show()
def open_file(self):
filename, _ = QFileDialog.getOpenFileName(None, 'Open file', '', 'All files (*)')
if filename:
print(f'Selected file: {filename}')
def save_file(self):
filename, _ = QFileDialog.getSaveFileName(None, 'Save file', '', 'All files (*)')
if filename:
print(f'Selected file: {filename}')
if __name__ == '__main__':
app = QApplication([])
ex = Example()
app.exec_()
该示例程序中包括了打开和保存文件的按钮,点击打开按钮会弹出文件对话框,选择一个文件后会打印出该文件的路径;点击保存按钮同样会弹出文件对话框,选择一个保存的文件路径后也会将其打印出来。
示例2:打开多个文件
下面是一个用于打开多个文件的示例代码:
from PyQt5.QtWidgets import QFileDialog, QApplication, QPushButton, QVBoxLayout, QWidget
import os
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
self.btn_open_files = QPushButton('Open files', self)
self.btn_open_files.clicked.connect(self.open_files)
vbox.addWidget(self.btn_open_files)
self.setLayout(vbox)
self.setWindowTitle('File Dialog Example')
self.show()
def open_files(self):
filenames, _ = QFileDialog.getOpenFileNames(None, 'Open files', '', 'All files (*)')
if filenames:
for filename in filenames:
print(f'Selected file: {filename}')
if __name__ == '__main__':
app = QApplication([])
ex = Example()
app.exec_()
该示例程序中只有一个按钮,点击该按钮会弹出打开多个文件对话框,选择一个或多个文件后会逐一将它们的路径打印出来。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 QFileDialog小工具 - Python技术站