界面设计和布局 - 白月黑羽 (byhy.net)https://www.byhy.net/py/qt/qt_03/
1. designer.exe 路径
D:\Program Files\Python310\Lib\site-packages\PySide2\designer.exe
2. 动态加载UI文件
Python程序加载UI文件,动态创建相应窗口对象
从 UI 定义中动态 创建一个相应的窗口对象,里面的控件对象也成为窗口对象的属性了
self.ui = QUiLoader().load('main.ui') 加载名为main.ui的UI界面其中main.ui为用 designer.exe 创建的UI界面
self.ui.button.clicked.connect(self.handleCalc)
UI中的button按钮 连接到 handleCalc ,即使用 handleCalc 处理
from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader
class Stats:
def __init__(self):
# 从文件中加载UI定义
# 从 UI 定义中动态 创建一个相应的窗口对象
# 注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
self.ui = QUiLoader().load('main.ui')
self.ui.button.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. 转化UI文件为Python代码
pyside2-uic main.ui > ui_main.py