用pyside6创建一个界面并实现一个小功能且能打包成问题记录
现在我们要开发一个程序,让用户输入一段文本包含:员工姓名、薪资、年龄。该程序可以把薪资在 2万 以上、以下的人员名单分别打印出来。
1用designer创建界面并生成UI文件;
2直接调用ui文件实现功能;
from PySide6.QtWidgets import QApplication, QMessageBox
from PySide6.QtUiTools import QUiLoader
uiLoader = QUiLoader()
class Stats:
def __init__(self):
# 从文件中加载UI定义
# 从 UI 定义中动态 创建一个相应的窗口对象
# 注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
self.ui = QUiLoader().load('hello.ui')
self.ui.pushButton.clicked.connect(self.handleCalc)
def handleCalc(self):
info = self.ui.textEdit.toPlainText()
salary_above_20k = ''
salary_below_20k = ''
for line in info.splitlines():
if not line.strip():
continue
parts = line.split(' ')
parts = [p for p in parts if p]
name,salary,age = parts
if int(salary) >= 20000:
salary_above_20k += name + '\n'
else:
salary_below_20k += name + '\n'
QMessageBox.about(self.ui,
'统计结果',
f'''薪资20000 以上的有:\n{salary_above_20k}
\n薪资20000 以下的有:\n{salary_below_20k}'''
)
app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec()
3转为py文件调用
在pycharm中用全命令,避免配置方式导致的不能调用的问题:
C:\Users\.conda\envs\occsource\Scripts\pyside6-uic.exe hello.ui -o helloui.py
import sys
from PySide6.QtWidgets import QApplication, QWidget,QMessageBox
from helloui import Ui_Form # 替换为你的文件名
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.handleCalc)
def handleCalc(self):
info = self.ui.textEdit.toPlainText()
salary_above_20k = ''
salary_below_20k = ''
for line in info.splitlines():
if not line.strip():
continue
parts = line.split(' ')
parts = [p for p in parts if p]
name,salary,age = parts
if int(salary) >= 20000:
salary_above_20k += name + '\n'
else:
salary_below_20k += name + '\n'
QMessageBox.about(self,
'统计结果',
f'''薪资20000 以上的有:\n{salary_above_20k}
\n薪资20000 以下的有:\n{salary_below_20k}'''
)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
4打包
需要安装pyinstaller:
在pycharm中收缩找到pyinstaller,安装就行;
由于没有在环境中指定pyinstall,可以切换到控制台,用全安装路径调用(记得把ui文件和生成的spec文件拷过去:
C:\Users\zhangpp-b\.conda\envs\occsource\Scripts\pyinstaller.exe 调用ui.py --noconsole
其中
–noconsole 指定不要命令行窗口,否则我们的程序运行的时候,还会多一个黑窗口。 但是我建议大家可以先去掉这个参数,等确定运行成功后,再加上参数重新制作exe。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。