在介绍 PySide2 的功能之前,
先给大家推荐一个非常好用的图形化设计工具:Qt Designer
代码实现都是基于这个工具上的元件配置来写的
目录:
一、Qt Designer 可执行程序的路径
-
1、下载 PySide2 第三方库:
方法一:CMD命令行:pip install pyside2
方法二:PyCharm 的 Settings 里面安装【不作详细描述】 -
2、Qt Designer 的执行程序在 Python安装目录下的:\Lib\site-packages\PySide2 ,双击即可运行:
C:\Users\user\AppData\Local\Programs\Python\Python36\Lib\site-packages\PySide2
二、工具常用控件标注:
- 一般自己设计简单的工具,只需要掌握这些元件的使用即可
三、Label:功能实现
- 1、一般标注为其他功能元件的描述,如下图所示:
- 2、实现插入图片【Label控件的QLabel的Pixmap属性,点击右侧文件选择上传即可】:
四、PushButton:可点击按钮【常用来关联执行方法】
-
1、按钮绑定执行方法,就能在按钮被点击时触发 Login 方法实现登录:
'''按钮绑定登陆方法''' self.comboBox.currentIndexChanged.connect(self.Login) '''新增用户''' def Login(self): url = ip_port + "/api/login" json = { "loginId": phone, "pwd": pwd } headers = {'Content-Type': 'application/json'} response = requests.request("POST", url, headers=headers, json=json) print("登陆成功!")
五、Line Edit:单行文本输入框
- 1、文本框设置提示文案:self.lineEdit.setPlaceholderText(“请输入提示文案:”)
- 2、文本框------文案获取:self.lineEdit.text()
- 3、文本框------文案重置:self.lineEdit.clear()
- 4、文本框文案设置文本:self.lineEdit.setText(“admin”)
六、Plain Text Edit :多行文本输入框
- 1、文本框设置提示文案:self.plainTextEdit.setPlaceholderText(“请输入提示文案:”)
- 2、文本框------文案获取:self.plainTextEdit.text()
- 3、文本框------文案重置:self.plainTextEdit.clear()
- 4、文本框文案设置文本:self.plainTextEdit.setText(“admin”)
七、Text Browser:文本浏览框【一般用来展示输出结果】
- 1、文本框设置提示文案:self.textBrowser.setPlaceholderText(“请输入提示文案:”)
- 2、文本框------文案获取:self.textBrowser.text()
- 3、文本框------文案重置:self.textBrowser.clear()
- 4、文本框文案设置文本:self.textBrowser.append(“admin”)
八、ComboBox:下拉选择框
-
1、下拉控件添加选项:self.comboBox.addItems([‘测试环境’,‘正式环境’])
-
2、获取当前选项文本:self.comboBox.currentText()
-
3、根据选项值改变请求参数【简单代码实现】:
'''写一个选项切换的方法,返回请求的ip_port''' def ChangeEnv(self): # 获取当前选项文本 Env_text = self.ui.comboBox.currentText() if Env_text == "测试环境": ip_port = "http://baidu-test.cn" else: ip_port = "https://baidu.com" return ip_port def Login(self): ip_port = self.ChangeEnv() json = { "loginId": phone, "pwd": pwd } headers = {'Content-Type': 'application/json'} response = requests.request("POST", url, headers=headers, json=json) print("登陆成功!")
九、CheckBox:多选按钮复选框
-
1、 一键全选/取消全选【True 改为 False 即可】
def __init__(self): self.pushButton.clicked.connect(self.All_Choose) # 按钮绑定方法 '''定义一个全选按钮的方法''' # setChecked():传入True则为选中,传入False则为取消选中 def All_Choose(self): self.ui.checkBox_apple.setChecked(True) self.ui.checkBox_banana.setChecked(True) self.ui.checkBox_pear.setChecked(True)
-
2、勾选按钮,点击实现触发事件
''' .isChecked(): 该方法返回控件是否被选中,返回类型为 布尔值 ''' def __init__(self): '''按钮绑定方法''' self.ui.pushButton1.clicked.connect(self.Eat_Apple) self.ui.pushButton2.clicked.connect(self.Eat_Banana) self.ui.pushButton3.clicked.connect(self.Eat_Pear) def Eat_Apple(self): if self.ui.checkBox_apple.isChecked() == True: print("我喜欢吃苹果") def Eat_Banana(self): if self.ui.checkBox_banana.isChecked() == True: print("我喜欢吃香蕉") def Eat_Pear(self): if self.ui.checkBox_pear.isChecked() == True: print("我喜欢吃梨子")
十、Radio Button:单选按钮
- 1、按钮被选中,触发事件:
'''定义一个全选按钮的方法''' # isChecked():判断按钮是否为选中,返回True则为选中,传入False则为取消选中 if self.radioButton isChecked() == True: print("按钮被选中了") else: print("按钮未被选中")
十一、ProgressBar:进度条展示
-
源码放上,复制粘贴到PyCharm,右键运行即可:
# 导入所需控件模块 from PySide2.QtWidgets import QApplication from PySide2.QtUiTools import QUiLoader from PySide2.QtCore import QFile from time import sleep import os class Stats(): def __init__(self): # 从文件中加载UI定义 qfile_stats = QFile(r'D:\你的ui文件名路径.ui') qfile_stats.open(QFile.ReadOnly) qfile_stats.close() self.ui = QUiLoader().load(r'D:\你的ui文件名路径.ui') # 进度条步骤个数设置,如:我设置四个步骤:[0%,25%,50%,75%,100%] self.ui.progressBar.setRange(0,4) # 按钮点击怎么触发事件呢?加一段 clicked 代码,调用事件方法 self.ui.pushButton.clicked.connect(self.use_progressBar) self.ui.progressBar.setValue(0) # 写一个方法,打印进度对应的文本 def use_progressBar(self): # 重置倒退进度条的进度 self.ui.progressBar.reset() # 当代码执行至此,进读条为:0% self.ui.textBrowser.append("此时进度为0%") # setValue(0):表示完成了 0/4 self.ui.progressBar.setValue(0) # 睡眠一秒,方便看到进度条加载样式 sleep(1) # 当代码执行至此,进读条为:25% self.ui.textBrowser.append("此时进度为25%") # setValue(1):表示完成了 2/4 self.ui.progressBar.setValue(1) # 睡眠一秒,方便看到进度条加载样式 sleep(1) # 当代码执行至此,进读条为:50% self.ui.textBrowser.append("此时进度为50%") # setValue(2):表示完成了 2/4 self.ui.progressBar.setValue(2) # 睡眠一秒,方便看到进度条加载样式 sleep(1) # 当代码执行至此,进读条为:75% self.ui.textBrowser.append("此时进度为75%") # setValue(3):表示完成了 3/4 self.ui.progressBar.setValue(3) # 睡眠一秒,方便看到进度条加载样式 sleep(1) # 当代码执行至此,进读条为:100% self.ui.textBrowser.append("此时进度为100%") # setValue(4):表示全部完成了 4/4 self.ui.progressBar.setValue(4) # 睡眠一秒,方便看到进度条加载样式 sleep(1) if __name__ == '__main__': # 创建一个实例化对象,QApplication 提供了整个图形界面程序的底层管理功能 app = QApplication([]) # 创建一个实例化对象,接受定义的所有参数配置 stats = Stats() # 展示窗口及其所有的控件 stats.ui.show() # 进入事件处理循环(没有此段代码,窗口将会一闪而过) app.exec_()
十二、文件选择器
- 1、准备好一个按钮 pushButton,绑定打开文件夹方法
from PySide2.QtWidgets import QFileDialog def __init__(self): self.pushButton.clicked.connect(self.open_fileManager) '''点击触发打开文件的事件''' def open_fileManager(self): filePath, _ = QFileDialog.getOpenFileName( self.ui, # 父窗口对象 "选择你要上传的文件", # 标题 r"d:\\", # 起始目录 "json类型 (*.xls *.xlsx *.png *.jpg *.doc *.docx)" # 选择类型过滤项,过滤内容在括号中 ) self.ui.lineEdit.setText(filePath)
- 2、实现如图所示的功能:
十三、Pyinstaller:将.py文件打包成可执行的.exe程序
-
1、安装 PyInstaller:pip3 install pyinstaller
-
2、 进入文件所在目录的 CMD 窗口 或者打开 .py文件的终端 Terminal,并执行:
pyinstaller --noconsole --workpath d:\dist --distpath d:\build -F --hidden-import PySide2.QtXml demo.py参数 【建议按照顺序拼接参数】 功能释义 - - noconsole 去掉执行.exe 程序时出现的控制台窗口(就是俗称的DOS黑窗口) - - workpath 指定了制作过程中临时文件的存放目录 - - distpath 指定了最终的可执行文件目录所在的父目录 - F 打包成一个 .exe 文件【文件只有一个,文件较大】 - - icon 自定义打包出来的exe文件图标:自定义ico图片,转换地址 - - hidden-import PySide2.QtXml 参数是因为这个 QtXml库是动态导入,PyInstaller没法分析出来,需要我们告诉它