QFileDialog is a dialog that allows users to select files or directories. The files can be selected for both opening and saving.
这个大概类似我们每次在GUI窗体中要选择下载目录时跳出的选界面。
代码:
# coding='utf-8'
from PyQt5.QtWidgets import QMainWindow, QApplication,\
QFileDialog, QTextEdit, QAction
import sys
from PyQt5.QtGui import QIcon
class Gui(QMainWindow):
def __init__(self):
super().__init__()
self.start()
def start(self):
# 创建一个多行文本编辑器
self.text_edit = QTextEdit()
# 使刚刚创建的多行文本编辑器占据QMainWindow(主窗体)\
# 所有可以占据的空间
self.setCentralWidget(self.text_edit)
# 利用QMainWindow创建左下角的状态栏,初始没设置消息的话是空
self.statusBar()
# 创建一个QAction事件,QAction事件通常用来和menubar,\
# toolbar, statusbar等相关联
open_file = QAction(QIcon('./图片素材/打开文件/24.png'),
'选择文件', self)
open_file.setShortcut('Ctrl+O')
open_file.setStatusTip('打开新文件')
open_file.triggered.connect(self.show_dialog)
# 创建第一个菜单:名字是'文件'
file = self.menuBar().addMenu('文件')
# 给刚刚创建的名字是'文件'的菜单添加QAction事件
file.addAction(open_file)
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('文件对话框')
self.show()
def show_dialog(self):
# 构造函数:getOpenFileName(
# parent: QWidget = None,\
# caption: str = '',\
# directory: str = '',\
# filter: str = '',\
# initialFilter: str = '',\
# options: Union[QFileDialog.Options,\
# QFileDialog.Option] = 0)\
# 返回值 -> Tuple[str, str] """
# 这里注意directory参数的意思是初始的默认的打开目录
fname = QFileDialog.getOpenFileName(self, '打开文件', './')
# fname[0]是用户选择的文件的绝对路径(我们需要的),\
# fname[1]是'All Files (*)'这个字符串(表示我们设置的参数filter)
# 如果用户任何文件都不选择,返回: ('', '')
if fname[0]:
# 用读文本的形式创建文件对象f
# 这里注意打开文件的话,如果文件内容包含了中文,\
# 那么必须要手动设置encoding等于要打开的文件编码\
# 如果使纯英文的那么没必要加上encoding
f = open(fname[0], 'r', encoding='utf-8')
# with 语句文件会自动关闭
with f:
data = f.read()
# 将从文件读取到的文本放置到text_edit中去
self.text_edit.setText(data)
app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())
运行结果:
image.png
image.png image.png
网友评论