pyqt图形化显示—4.便捷控件
设计一个完整的图形化显示肯定需要多个窗口啊,ui啊 为了方便进行设计,qtside6提供了很多便捷控件
弹出对话框
导入库
from PySide6.QtWidgets import QMessageBox
QMessageBox 弹出对话框库
界面
下面代码展示一下 就是一个按钮,点击后弹出对话框
1 def __init__(self): 2 super().__init__() # 调用父类的__init__方法,初始化QWidget 3 4 btn = QPushButton('弹出对话框') # 创建按钮 5 btn.clicked.connect(self.test) # 连接按钮的clicked信号到槽函数 6 7 ml = QVBoxLayout() # 创建主布局 8 ml.addWidget(btn) # 添加到主布局中 9 10 self.setLayout(ml) # 设置主布局 11 12 def test(self): 13 QMessageBox.question(self, '提示', '这是一个对话框') 14 # QMessageBox.information(self, '提示', '这是一个对话框', QMessageBox.StandardButton.Ok) 15 # QMessageBox.warning(self, '提示', '这是一个对话框', QMessageBox.StandardButton.Ok) 16 # QMessageBox.critical(self, '提示', '这是一个对话框', QMessageBox.StandardButton.Ok) 17 # QMessageBox.about(self, '提示', '这是一个对话框')
可以发现属性有很多种下面介绍一下,其实没有太大的区别,只有提示图标的变化
question
information
warning ![image]()
information
warning 
critical
about ![image]()
about 
根据第一个函数和其他函数的不同用法,可以发现参数不同的作用
QMessageBox.属性名(self, '标题', '文字内容', 界面的交互按钮,默认按钮)
按钮如果不设置会自动设置为Yes和No,具体有什么提示按钮可以在python中QMessageBox.StandardButton. 【记得带点】查询一下,还是整合了很多的。那如果我不希望这个界面只有一个按钮怎么设置多个呢,可以使用分隔符设置多个。默认按钮就是在第五个参数位置重复一下希望默认的按钮,不设置默认为第一个。
QMessageBox.information(self, '提示', '这是一个对话框', QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.No | QMessageBox.StandardButton.Cancel)
这样我就设置了一个多按钮的弹出框

交互
那么我们设置好了界面如何进行交互呢,其实QMessageBox.属性名()是有返回值的,返回值为按键名称【QMessageBox.StandardButton.按键名】,我们就可以根据返回值判断设置逻辑
文件交互
导入库
from PySide6.QtWidgets import QFileDialog
QFileDialog : 文件交互的库
界面
def __init__(self): super().__init__() # 调用父类的__init__方法,初始化QWidget self.resize(200, 150) btn = QPushButton('选择文件') # 创建按钮 btn.clicked.connect(self.test) ml = QVBoxLayout() # 创建主布局 ml.addWidget(btn) self.setLayout(ml) # 设置主布局 def test(self): fname = QFileDialog.getOpenFileName(self, '选择文件', './', 'Text Files (*.txt);;All Files (*)') # fname = QFileDialog.getOpenFileNames(self, '选择文件', './', 'Text Files (*.txt);;All Files (*)') # fname = QFileDialog.getExistingDirectory(self, '选择文件', './') # fname = QFileDialog.getSaveFileName(self, '选择文件', './', 'Text Files (*.txt);;All Files (*)') print(fname)
不同的属性对应不同的命令
getOpenFileName : 打开单个文件
getOpenFileNames : 打开多个文件
getExistingDirectory : 打开文件夹
getSaveFileName : 保存文件
getOpenFileName 和getOpenFileNames 的参数如下(self,‘标题名称’,‘文件夹打开路径’,‘过滤文件类型’)
self位置为窗口类型;过滤文件类型就行下图演示确定上方的下拉框【过滤文件格式:名称(*.希望的文件后缀 *.其他后缀);;名称(*.文件后缀)】需要注意整个过滤类型中符号均为英文格式,例如:
'All Files (*);;Text Files (*.txt);;py文件(*.py))'

选择之后我们可以得到返回值
getOpenFileName 返回一个元组,第一个是文件地址,第二个是通过那个过滤类型中选择的

getOpenFileNames 返回一个元组,第一个元素是一个列表,各个文件的地址;第二个同样是过滤类型名称
![]()
getExistingDirectory 的参数为(窗体名称(sefl),‘标题名称’,‘打开文件夹的默认路径’)

getExistingDirectory 返回值为选择的文件夹地址 
getSaveFileName 与打开文件类似,返回值同样为一个元组,第一个为保存文件地址,第二个为过滤类型。不同的是如果有同名文件夹,会提示是否覆盖,是会覆盖,否会返回一个有两个空元素的元组

选择否,并关闭弹出的界面的返回值 ![]()

浙公网安备 33010602011771号