一个简单的快递邮费计算器。是学编程初期的一个小作业,最开始是用纯脚本的方式实现,现在重写了,实现了可视化的界面。用到了动态加载ui文件的技巧。ui文件是由PySide2 自带的 Qt Designer工具生成的,这个工具用于生成UI界面非常方便,在这个工具里把想要的程序界面设计好以后,保存成一个ui文件,再在python里加载这个ui文件,省去了用代码敲出界面的一大麻烦。后续多找几个项目练习一下这个。
from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile
class Stats:
def __init__(self):
# 从文件中加载UI定义
#qfile_stats = QFile('1.ui')
#qfile_stats.open(QFile.ReadOnly)
#qfile_stats.close()
# 从 UI 定义中动态 创建一个相应的窗口对象
# 注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
#self.ui = QUiLoader().load(qfile_stats)
self.ui = QUiLoader().load('1.ui')
self.ui.pushButton.clicked.connect(self.handleCalc)
def handleCalc(self):
weight = float(self.ui.textEdit1.toPlainText())
address = self.ui.textEdit2.toPlainText()
price = ''
if 0<weight <=3:
if address == '1':
price = '总价是12元'
elif address == '2':
price = '总价是20元'
elif address == '3':
price = '不接受寄件'
elif address == '4':
price = '总价是10元'
else:
price = '地址代码错误!'
elif weight >3:
if address == '1':
price = f'总价是{12+(weight-3)*10}元'
elif address == '2':
price = f'总价是{20+(weight-3)*20}元'
elif address == '3':
price = '请联系总公司'
elif address == '4':
price = f'总价是{10+(weight-3) * 5}元'
else:
price = '地址代码错误!'
elif weight<=0:
price = '重量错误!'
QMessageBox.about(self.ui,
'计算结果',
f'''您好:\n{price}
'''
)
app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec_()