一、用QT设计师绘制界面保存成ui文件
1、打开QTdesigner
2、选择Dialog without Buttons,并单击“创建”按钮。
3、添加控件。
(1)拖拽“Label”控件,在文本属性中添加文字“请输入第一个数字:”;在Label水平位置拖拽一个“Line Edit”控件。
(2)拖拽“Label”控件,在文本属性中添加文字“请输入第二个额数字:”;在Label水平位置拖拽一个“Line Edit”控件。
(3)拖拽4个“PushButton”控件,在文本属性中分别添加文字“+”、“-”、“*”、“/”。
(4)拖拽“Label”控件,在文本属性中添加文字“结果:3+5=8”。
(5)现在的效果如图:
二、Qt6样式控制(QSS)
1、右键单击窗体,选择“改变样式表”,修改控件的样式。如下图所示:
2、在“编辑样式表”中输入下述指令:
*{
font-size:16px;
color:rgb(0, 85, 255);
}
颜色选择蓝色,效果如图:
三、使用布局管理器进行窗体布局
1、选择如图所示控件,点击“水平布局”(快捷键“ctrl+1”),进行水平布局。
2、选择如图所示控件,点击“水平布局”(快捷键“ctrl+1”),进行水平布局。
3、选择如图所示控件,点击“水平布局”(快捷键“ctrl+1”),进行水平布局。
4、选择所有控件,点击“垂直布局”(快捷键“ctrl+2”),进行垂直布局。如图所示
5、最后的效果如图:
四、PYQt6信号与槽的处理
1、选择窗体控件,将"objectName"属性变为“SimpleComputer”。
2、选择窗体控件,将"windowTitle"属性变为“简单计算器”。
3、选择如图所示控件,将"objectName"属性变为“lineEdit_first”。
4、选择如图所示控件,将"objectName"属性变为“lineEdit_second”。
5、选择如图所示控件,将"objectName"属性变为“pushButton_add”。
6、选择如图所示控件,将"objectName"属性变为“pushButton_sub”。
7、选择如图所示控件,将"objectName"属性变为“pushButton_mul”。
8、选择如图所示控件,将"objectName"属性变为“pushButton_divide”。
9、选择如图所示控件,将"objectName"属性变为“label_result”。
10、“ctrl+s”保存文件,文件名为“simple_computer.ui”。
11、在anaconda中将“simple_computer.ui”文件变为“simple_computer.py”。如下图所示:
12、生成的“simple_computer.py”代码如下:
# Form implementation generated from reading ui file 'simple_computer.ui'
#
# Created by: PyQt6 UI code generator 6.4.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_SimpleComputer(object):
def setupUi(self, SimpleComputer):
SimpleComputer.setObjectName("SimpleComputer")
SimpleComputer.resize(400, 300)
SimpleComputer.setStyleSheet("*{\n"
" font-size:16px;\n"
" color:rgb(0, 85, 255);\n"
"}")
self.widget = QtWidgets.QWidget(SimpleComputer)
self.widget.setGeometry(QtCore.QRect(10, 40, 322, 128))
self.widget.setObjectName("widget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label = QtWidgets.QLabel(self.widget)
self.label.setObjectName("label")
self.horizontalLayout.addWidget(self.label)
self.lineEdit = QtWidgets.QLineEdit(self.widget)
self.lineEdit.setObjectName("lineEdit")
self.horizontalLayout.addWidget(self.lineEdit)
self.verticalLayout.addLayout(self.horizontalLayout)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_2 = QtWidgets.QLabel(self.widget)
self.label_2.setObjectName("label_2")
self.horizontalLayout_2.addWidget(self.label_2)
self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
self.lineEdit_2.setText("")
self.lineEdit_2.setObjectName("lineEdit_2")
self.horizontalLayout_2.addWidget(self.lineEdit_2)
self.verticalLayout.addLayout(self.horizontalLayout_2)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.pushButton = QtWidgets.QPushButton(self.widget)
self.pushButton.setObjectName("pushButton")
self.horizontalLayout_3.addWidget(self.pushButton)
self.pushButton_2 = QtWidgets.QPushButton(self.widget)
self.pushButton_2.setObjectName("pushButton_2")
self.horizontalLayout_3.addWidget(self.pushButton_2)
self.pushButton_3 = QtWidgets.QPushButton(self.widget)
self.pushButton_3.setObjectName("pushButton_3")
self.horizontalLayout_3.addWidget(self.pushButton_3)
self.pushButton_4 = QtWidgets.QPushButton(self.widget)
self.pushButton_4.setObjectName("pushButton_4")
self.horizontalLayout_3.addWidget(self.pushButton_4)
self.verticalLayout.addLayout(self.horizontalLayout_3)
self.label_3 = QtWidgets.QLabel(self.widget)
self.label_3.setObjectName("label_3")
self.verticalLayout.addWidget(self.label_3)
self.retranslateUi(SimpleComputer)
QtCore.QMetaObject.connectSlotsByName(SimpleComputer)
def retranslateUi(self, SimpleComputer):
_translate = QtCore.QCoreApplication.translate
SimpleComputer.setWindowTitle(_translate("SimpleComputer", "简单计算器"))
self.label.setText(_translate("SimpleComputer", "请输入第一个数字:"))
self.label_2.setText(_translate("SimpleComputer", "请输入第二个数字:"))
self.pushButton.setText(_translate("SimpleComputer", "+"))
self.pushButton_2.setText(_translate("SimpleComputer", "-"))
self.pushButton_3.setText(_translate("SimpleComputer", "*"))
self.pushButton_4.setText(_translate("SimpleComputer", "/"))
self.label_3.setText(_translate("SimpleComputer", "结果:3+5=8"))
13、在“simple_computer.py”文件同级建立“simple_computer_main.py”文件。代码如下:
#引入系统模块
import sys
#引入PyQt6模块
from PyQt6.QtWidgets import (
QApplication,QDialog,QMessageBox
)
#引入平级的simple_computer模块
import simple_computer
#创建MySimpleCompute类
class MySimpleCompute(simple_computer.Ui_SimpleComputer,QDialog):
#创建构造函数
def __init__(self):
#继承父类
super().__init__()
#调用父类的setupUi函数
self.setupUi(self)
#调用显示窗口
self.show()
#将pushButton_add绑定事件函数,进行加法计算
self.pushButton_add.clicked.connect(self.do_compute("add"))
# 将pushButton_sub绑定事件函数,进行减法计算
self.pushButton_sub.clicked.connect(self.do_compute("sub"))
# 将pushButton_mul绑定事件函数,进行乘法计算
self.pushButton_mul.clicked.connect(self.do_compute("mul"))
# 将pushButton_dovide绑定事件函数,进行除法计算
self.pushButton_divide.clicked.connect(self.do_compute("div"))
#创建do_compute函数,执行具体的计算
def do_compute(self,method):
#创建do_compute的内部函数
def compute():
# 将lineEdit_first的文本属性赋值给first
first = self.lineEdit_first.text()
second = self.lineEdit_second.text()
# 判断lineEdit_first的输入是否为文本,如果不是,弹出提示框
try:
first = float(first)
except:
QMessageBox.warning(self, "信息提示", "第一个数字,不是数字,请重新输入")
# 判断lineEdit_second的输入是否为文本,如果不是,弹出提示框
try:
second = float(second)
except:
QMessageBox.warning(self, "信息提示", "第二个数字,不是数字,请重新输入")
#运算符号的初始值为空
symbol=""
#运算结果的初始值为0
result=0
#加法运算
if method=="add":
result=first+second
symbol="+"
#减法运算
elif method=="sub":
result=first-second
symbol = "-"
#乘法运算
elif method=="mul":
result=first*second
symbol = "*"
#除法运算
elif method=="div":
#判断分母是否为0,若为0,弹出警告框
if second==0:
QMessageBox.warning(self,"信息提示","除法的时候,第二个数字不能为0")
result=round(first/second,2)
symbol = "/"
#将运算结果赋值为label_result
self.label_result.setText(f"结果:{first}{symbol}{second}={result}")
#如果运算成功,弹出“计算成功”的提示信息
QMessageBox.information(self,"信息提示","计算成功")
return
return compute
if __name__ == '__main__':
#app的入口函数
app=QApplication(sys.argv)
#初始化类MySimpleCompute函数
mySimpleCompute=MySimpleCompute()
#退出系统
sys.exit(app.exec())
五、pyinstaller打包命令
1、在anaconda终端输入以下命令:
pyinstaller -F -w bmi_compute_main.py
对文件进行打包。如图;
2、打包后的文件如图所示:
文章来源:https://www.toymoban.com/news/detail-789469.html
六、小结
本文通过一个计算器的例子,演示PyQt6的简单应用。希望对新手学习者有帮助。文章来源地址https://www.toymoban.com/news/detail-789469.html
到了这里,关于PyQt6案例3:简单计算器案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!