pyqt图形化显示—4.便捷控件
设计一个完整的图形化显示肯定需要多个窗口啊,ui啊 为了方便进行设计,qtside6提供了很多便捷控件
弹出对话框
导入库
from PySide6.QtWidgets import 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, '提示', '这是一个对话框')
可以发现属性有很多种下面介绍一下,其实没有太大的区别,只有提示图标的变化
information
warning 
about 
根据第一个函数和其他函数的不同用法,可以发现参数不同的作用
QMessageBox.information(self, '提示', '这是一个对话框', QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.No | QMessageBox.StandardButton.Cancel)
这样我就设置了一个多按钮的弹出框

那么我们设置好了界面如何进行交互呢,其实QMessageBox.属性名()是有返回值的,返回值为按键名称【QMessageBox.StandardButton.按键名】,我们就可以根据返回值判断设置逻辑
文件交互
导入库
from PySide6.QtWidgets import 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 的参数为(窗体名称(sefl),‘标题名称’,‘打开文件夹的默认路径’)

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

选择否,并关闭弹出的界面的返回值 ![]()
获取输入
导入库
from PySide6.QtWidgets import QInputDialog
界面
界面我们创建一个按钮,点击就弹出获取输入,按钮控件已经好多次展示了,这次就直接展示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.的函数内全局命名方式



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


浙公网安备 33010602011771号