python GUI库图形界面开发之PyQt5打开保存对话框Q

1. PyQt5简介

PyQt5是用于Python语言的一种GUI框架。它是基于QtGUI库的Python语言封装。PyQt5提供了丰富的UI界面控件,使得开发图形用户界面(GUI)变得更加简单,并且可以进行跨平台的开发。

在PyQt5中,QFileDialog是一种常用的控件,用于弹出文件打开或保存对话框。QFileDialog可以让用户选择文件或目录,并可以在控件中设置过滤器,以便在对话框中显示特定类型的文件。

2. 打开对话框QFileDialog

2.1 打开文件对话框

在PyQt5中,打开文件对话框可以通过调用QFileDialog类中的getOpenFileName函数来实现。getOpenFileName函数是一个静态方法,用于显示文件打开对话框并返回用户选择的文件名称。

from PyQt5.QtWidgets import QFileDialog, QApplication

app = QApplication([])

filename, _ = QFileDialog.getOpenFileName(None, "Open File", "", "Text Files (*.txt)")

在代码中,第一个参数为控件的父类,None表示没有父类,在不需要指定父控件时可以传入None。第二个参数为对话框标题。第三个参数为文件对话框的默认打开目录。第四个参数为过滤器,用于过滤显示的文件类型。函数的返回值是一个元组,分别包含文件名和文件扩展名。

2.2 获取目录文件名

使用getExistingDirectory()方法可以让用户选择一个文件夹,通过指定QFileDialog.Directory的参数设定对话框为选择目录模式。

dir_path = QFileDialog.getExistingDirectory(self, '选择文件路径', 'C:/')

#设置初始路径、文件类型过滤

file_name,_= QFileDialog.getOpenFileName(self,'文件选择','file','Text files (*.txt)')

在代码中,第一个参数为控件的父类,'选择文件路径'为显示在对话框标题栏上的标题。第二个参数为打开对话框的起始目录。第三个参数为文件类型过滤器。

3. 保存对话框QFileDialog

3.1 保存文件对话框

在PyQt5中,保存文件对话框可以通过调用QFileDialog类中的getSaveFileName函数来实现。getSaveFileName函数是一个静态方法,用于显示文件保存对话框并返回用户选择的文件名称。如果用户点击了“取消”按钮,则返回空字符串。

filename, _ = QFileDialog.getSaveFileName(None, "Save File", "", "Text Files (*.txt)")

if filename:

with open(filename, 'w') as f:

f.write("Hello World!\n")

在代码中,第一个参数为控件的父类,None表示没有父类,在不需要指定父控件时可以传入None。第二个参数为对话框标题。第三个参数为文件对话框的默认保存目录。第四个参数为过滤器,用于过滤显示的文件类型。函数的返回值是一个元组,分别包含文件名和文件扩展名。

3.2 文件过滤器

文件过滤器可以让用户选择文件类型,并在对话框中只显示这些类型的文件。

#添加文件类型过滤器

options = QFileDialog.Options()

options |= QFileDialog.DontUseNativeDialog

name, _ = QFileDialog.getSaveFileName(self, "保存文件", "", "PNG Files (*.png);;JPG Files (*.jpg);;PDF Files (*.pdf)", options=options)

在代码中,第三个参数为过滤器,用“;;”分隔。getSaveFileName()函数的第四个参数表示默认的文件类型为PNG格式,也可以选择JPG或PDF格式。

4.总结

通过上述的介绍,我们可以知道如何使用PyQt5中的QFileDialog控件实现打开和保存对话框,并且可以设置过滤器以过滤显示的文件类型。QFileDialog控件是PyQt5中常用的控件之一, 对于开发者来说掌握控件的使用方法对于图形用户界面(GUI)开发是非常有用的。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签