时间:2026-01-07 21:02
人气:
作者:admin
设计一个完整的图形化显示肯定需要多个窗口啊,ui啊 为了方便进行设计,qtside6提供了很多便捷控件
from PySide6.QtWidgets import QMessageBoxQMessageBox 弹出对话框库
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根据第一个函数和其他函数的不同用法,可以发现参数不同的作用
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 QFileDialogQFileDialog : 文件交互的库
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 与打开文件类似,返回值同样为一个元组,第一个为保存文件地址,第二个为过滤类型。不同的是如果有同名文件夹,会提示是否覆盖,是会覆盖,否会返回一个有两个空元素的元组

选择否,并关闭弹出的界面的返回值 ![]()
from PySide6.QtWidgets import QInputDialogQInputDialog : 获取输入的库
界面我们创建一个按钮,点击就弹出获取输入,按钮控件已经好多次展示了,这次就直接展示tex函数吧
def test(self): #result = QInputDialog.getInt(self, '输入框', '请输入整数', 0, 0, 100, 1) #result, ok = QInputDialog.getDouble(self, '输入框', '请输入浮点数', 0.0, 0.0, 111.1,2) result, ok = QInputDialog.getText(self, '输入框', '请输入内容', QLineEdit.EchoMode.PasswordEchoOnEdit, '默认内容') #result, ok = QInputDialog.getMultiLineText(self, '输入框', '请输入内容', '默认内容') #result, ok = QInputDialog.getItem(self, '输入框', '请选择', ['选项1', '选项2', '选项3'],2,False) # if ok: print(result)
QInputDialog.getText 获取文本 (窗体类型, ‘弹出窗口标题’, '弹出窗口内容',文字类型QLineEdit.EchoMode.模式名称, '默认内容')
from PySide6.QtWidgets import QFontDialog, QColorDialog
常用word都知道,字体修改一种是字体、字号等等的修改,这部分使QFontDialog库;另一部分是颜色的修改,这部分使用QcolorDialog库
def __init__(self): super().__init__() # 调用父类的__init__方法,初始化QWidget self.setWindowTitle('字体修改') # 设置窗口标题 self.textEdit = QTextEdit() # 创建文本框 self.btn1 = QPushButton('更改字体') # 创建按钮 self.btn2 = QPushButton('更改颜色') # 创建按钮 self.btn1.clicked.connect(self.test) self.btn2.clicked.connect(self.test) ml = QVBoxLayout() # 创建主布局 ml.addWidget(self.textEdit) # 添加文本框到主布局 ml.addWidget(self.btn1) ml.addWidget(self.btn2) self.setLayout(ml) # 设置主布局 def test(self): if self.sender() == self.btn1: ok, font = QFontDialog.getFont() if ok: self.textEdit.setFont(font) elif self.sender() == self.btn2: color = QColorDialog.getColor() if color.isValid(): self.textEdit.setTextColor(color)字体修改
我们创建一个文字输入框,点击下面两个按钮对输入框进行字体修改 
输入字体后,点击按钮激活对应槽函数,由于功能类似就进行了整合,通过self.sender()检测点击的那个按键,由于是需要传参所以这次使用的self.的函数内全局命名方式
QFontDialog.getFont() 弹出一个字体修改界面 


返回值为颜色的参数(红通道,绿色通道,蓝通道,1)需要注意通道内数字为1以内的浮点数,例如 100 对应0.392;200对应0.7843

information
warning
critical
about
返回值是一个元组,获得的数字和你点击的按键;需要注意,如果点击否,返回数值为0
其实观看界面就知道了这个窗口也可以根据输入框的右侧上下小箭头进行选择,只不过默认可以输入,所以可以更改
QInputDialog.getDouble 获取浮点型数字(窗体类型, ‘弹出窗口标题’, '弹出窗口内容', 默认数字, 最小数字, 最大数字, 浮点位数)
返回值同整形一样,同样点否返回值为0,这里只返回了数字是因为在定义里分别定义了元组不同元素的名称
文字类型QLineEdit.EchoMode.模式名称 是什么呢,就是输入文本的显示方式可以有一下几种形式
Normal 常规,没有任何变化
NoEcho 有输入,但是文本框内不显示
Password 输入在文本框内的字符加密,变为黑点
还有其他形式,有兴趣可以自行探索一下
返回值同样为元组,输入文本和点击的按键,点击否,返回空
QInputDialog.getMultiLineText 获取大量文本, (窗体类型, ‘弹出窗口标题’, '弹出窗口内容', '默认内容')
返回值为元组,输入内容和按键;若按键为否内容为空
若不单独设置,默认可编辑
返回值为元组,选项内容和按键;需要注意无论点击是否,返回值会返回内容;如果可编辑,否会返回默认选项