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  image    information  image    warning  image
critical  image    about  image

根据第一个函数和其他函数的不同用法,可以发现参数不同的作用

QMessageBox.属性名(self, '标题', '文字内容', 界面的交互按钮,默认按钮)
按钮如果不设置会自动设置为Yes和No,具体有什么提示按钮可以在python中QMessageBox.StandardButton. 【记得带点】查询一下,还是整合了很多的。那如果我不希望这个界面只有一个按钮怎么设置多个呢,可以使用分隔符设置多个。默认按钮就是在第五个参数位置重复一下希望默认的按钮,不设置默认为第一个。
QMessageBox.information(self, '提示', '这是一个对话框',
                                QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.No | QMessageBox.StandardButton.Cancel)

这样我就设置了一个多按钮的弹出框

image

 交互

那么我们设置好了界面如何进行交互呢,其实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))'

image

 选择之后我们可以得到返回值

getOpenFileName  返回一个元组,第一个是文件地址,第二个是通过那个过滤类型中选择的

image

 getOpenFileNames  返回一个元组,第一个元素是一个列表,各个文件的地址;第二个同样是过滤类型名称

image

 getExistingDirectory 的参数为(窗体名称(sefl),‘标题名称’,‘打开文件夹的默认路径’)

image

getExistingDirectory  返回值为选择的文件夹地址  image

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

image

 选择否,并关闭弹出的界面的返回值  image

 

 

 


 

 
posted @ 2026-01-07 21:02  Berserker兰斯洛特  阅读(5)  评论(0)    收藏  举报