現在我們要開發一個程序,讓用戶輸入一段文本包含:員工姓名、薪資、年齡。該程序可以把薪資在 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。因為這個黑窗口可以顯示出程序的報錯,這樣我們容易找到問題的線索。