现在我们要开发一个程序,让用户输入一段文本包含:员工姓名、薪资、年龄。该程序可以把薪资在 2万 以上、以下的人员名单分别打印出来。
1用designer创建界面并生成UI文件;
2直接调用ui文件实现功能;
from PySide6.QtWidgets import QApplication, QMessageBox
from PySide6.QtUiTools import QUiLoaderuiLoader = QUiLoader()
class Stats:def __init__(self):# 从文件中加载UI定义# 从 UI 定义中动态 创建一个相应的窗口对象# 注意:里面的控件对象也成为窗口对象的属性了# 比如 self.ui.button , self.ui.textEditself.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():continueparts = line.split(' ')parts = [p for p in parts if p]name,salary,age = partsif 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():continueparts = line.split(' ')parts = [p for p in parts if p]name,salary,age = partsif 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。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。