通过Qt_Designer设计ui界面,配合python可以很容易设计出自己想要的界面程序,下面详细介绍下通过此方法设计一款简单的BMI(身体质量指数)计算软件。
先来看下程序运行效果:
具体设计方法和步骤:
1.安装相关工具包
1)安装PyQt5
pip install PyQt5 -i https://pypi.douban.com/simple
[也可安装PyQt6,或者PySide2、PySide6,其中PyQt是第三方公司的产品,而PySide才是QT公司的产品,PyQt因发布的早使用者更多,但后续PySide可能发展会更好(毕竟亲儿子),不过两者在使用上各模块基本一致,对学习来说没有任何影响。]
2)安装PyQt5-tools
pip install PyQt5-tools -i https://pypi.douban.com/simple
如果只使用Qt-designer,也可以单独下载Qt-designer软件。
3)安装PyCharm(当然也可以选择其它编译工具)
在PyCharm中添加Qt-designer工具,这样的话在设置程序的时候可以更方便的修改UI界面。
首先打开pycharm“文件”->"设置"
进入“工具”->“外部工具”,点击左上角“+”,弹出“创建工具”界面,在“名称”栏输入“Qt-Designer”,在程序栏输入Qt-Designer程序所在路径(PyQt5-tools安装的话,路径一般在python目录下的“site-packages\PyQt5-tools目录下”,如果找不到可以用“Everything”软件搜索,比windows自带的好用),在工作目录栏输入“$FileDir$”,“确定”完成。
点击PyCharm工具栏,看到Qt->Qt_Designer说明添加成功,点击Qt_Designer可打开软件。
2.设计UI界面
打开Qt_Designer,在新建类型中选择QWidget。
1)在左边栏选择Label,拖动到设计框图中,分别输入“BMI计算工具”、“身高”、“体重”、“BMI”、“m”、“Kg”,在右侧属性栏中根据需要修改字体及大小,并进行适当排列。
2)选择Line Edit,拖动到设计框图中,建立两个文本输入框,调整尺寸和位置,分别用于输入身高和体重信息。
3)选择Text Browser,拖动到设计框图中,调整尺寸和位置,用于显示最终计算出的BMI信息。
4)选择Push Button,拖动到设计框图中,建立一个按钮,在按钮上输入“计算”,调整尺寸和位置。
完成后的UI界面大致如下。
5)修改控键对象名。这步非常重要,选择新建的两个Line Edit框,在右侧属性编辑栏中找到“objectName”,分别修改对应的Value为“height_edit”和“weight_edit”(这个值相当于变量名,后续程序编写中要用到,可根据自己习惯来定义),同样将“Text Browser”和"Push Button"修改为“bmi_showtext”、“calc_button”,Label不需要作修改。
设计好UI后,要对文件进行保存,保存文件为“.ui”格式,保存路径最好在对应的python工程文件下。
3.python程序设计(源码)
from PyQt5.QtWidgets import QApplication,QMessageBoxfrom PyQt5 import uicimport sysclass BmiCalc: def __init__(self): self.window = uic.loadUi('bmi_calc.ui') #加载Qt_designer生成的ui文件,注意路径和文件名 self.window.calc_button.clicked.connect(self.calc) #clicked事件,表示单击鼠标左键;calc_button为ui中的按钮对象名,calc为点击后要执行的函数 self.message = QMessageBox() #实例化信息框对象 def calc(self): h = self.window.height_edit.text() #获取身高信息,返回数据为字符串 w = self.window.weight_edit.text() #获取体重信息 bmi = float(w)/float(h)**2 #BMI计算 #bmi数据判断 if bmi < 18.5: string = '您的体型偏瘦!' elif 18.5 < bmi < 24: string = '您的体型正常!' else: string = '您的体型超重!' self.window.bmi_showtext.setText(str(round(bmi,2))) #BMI数据显示 self.message.about(self.window,'结论',string) #弹出信息框app = QApplication([])bmi_calc = BmiCalc() #实例化对象bmi_calc.window.show() #显示UIsys.exit(app.exec())
可以看到程序非常简单,代码不到30行。当然如果要更严谨,还需要对输入数据类型进行判断,以防止程序出错。