在介绍 PySide2 的功能之前,
先给大家推荐一个非常好用的图形化设计工具: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
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("登陆成功!")
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("登陆成功!")
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("我喜欢吃梨子")
'''定义一个全选按钮的方法'''
# isChecked():判断按钮是否为选中,返回True则为选中,传入False则为取消选中
if self.radioButton isChecked() == True:
print("按钮被选中了")
else:
print("按钮未被选中")
源码放上,复制粘贴到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_()
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)
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没法分析出来,需要我们告诉它 |