PyQt6案例3:简单计算器案例

这篇具有很好参考价值的文章主要介绍了PyQt6案例3:简单计算器案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、用QT设计师绘制界面保存成ui文件

1、打开QTdesigner
2、选择Dialog without Buttons,并单击“创建”按钮。
pyqt6实例,ui,windows,pyqt
3、添加控件。
(1)拖拽“Label”控件,在文本属性中添加文字“请输入第一个数字:”;在Label水平位置拖拽一个“Line Edit”控件。
(2)拖拽“Label”控件,在文本属性中添加文字“请输入第二个额数字:”;在Label水平位置拖拽一个“Line Edit”控件。
(3)拖拽4个“PushButton”控件,在文本属性中分别添加文字“+”、“-”、“*”、“/”。
(4)拖拽“Label”控件,在文本属性中添加文字“结果:3+5=8”。
(5)现在的效果如图:
pyqt6实例,ui,windows,pyqt

二、Qt6样式控制(QSS)

1、右键单击窗体,选择“改变样式表”,修改控件的样式。如下图所示:
pyqt6实例,ui,windows,pyqt
2、在“编辑样式表”中输入下述指令:

*{
	font-size:16px;
	color:rgb(0, 85, 255);
}

颜色选择蓝色,效果如图:
pyqt6实例,ui,windows,pyqt

三、使用布局管理器进行窗体布局

1、选择如图所示控件,点击“水平布局”(快捷键“ctrl+1”),进行水平布局。
pyqt6实例,ui,windows,pyqt
2、选择如图所示控件,点击“水平布局”(快捷键“ctrl+1”),进行水平布局。
pyqt6实例,ui,windows,pyqt
3、选择如图所示控件,点击“水平布局”(快捷键“ctrl+1”),进行水平布局。
pyqt6实例,ui,windows,pyqt
4、选择所有控件,点击“垂直布局”(快捷键“ctrl+2”),进行垂直布局。如图所示
pyqt6实例,ui,windows,pyqt
5、最后的效果如图:
pyqt6实例,ui,windows,pyqt

四、PYQt6信号与槽的处理

1、选择窗体控件,将"objectName"属性变为“SimpleComputer”。
pyqt6实例,ui,windows,pyqt
2、选择窗体控件,将"windowTitle"属性变为“简单计算器”。
pyqt6实例,ui,windows,pyqt
3、选择如图所示控件,将"objectName"属性变为“lineEdit_first”。
pyqt6实例,ui,windows,pyqt
4、选择如图所示控件,将"objectName"属性变为“lineEdit_second”。
pyqt6实例,ui,windows,pyqt
5、选择如图所示控件,将"objectName"属性变为“pushButton_add”。
pyqt6实例,ui,windows,pyqt
6、选择如图所示控件,将"objectName"属性变为“pushButton_sub”。
pyqt6实例,ui,windows,pyqt
7、选择如图所示控件,将"objectName"属性变为“pushButton_mul”。
pyqt6实例,ui,windows,pyqt
8、选择如图所示控件,将"objectName"属性变为“pushButton_divide”。
pyqt6实例,ui,windows,pyqt
9、选择如图所示控件,将"objectName"属性变为“label_result”。
pyqt6实例,ui,windows,pyqt
10、“ctrl+s”保存文件,文件名为“simple_computer.ui”。
11、在anaconda中将“simple_computer.ui”文件变为“simple_computer.py”。如下图所示:
pyqt6实例,ui,windows,pyqt
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

对文件进行打包。如图;
pyqt6实例,ui,windows,pyqt
2、打包后的文件如图所示:
pyqt6实例,ui,windows,pyqt

六、小结

本文通过一个计算器的例子,演示PyQt6的简单应用。希望对新手学习者有帮助。文章来源地址https://www.toymoban.com/news/detail-789469.html

到了这里,关于PyQt6案例3:简单计算器案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pyqt 实现计算器

    文件名为:untitled.py QApplication: QApplication 类管理图形用户界面应用程序的控制流和主要设置。 可以说 QApplication是Qt的整个后台管理的命脉 app = QApplication(sys.argv)这句作用用来初始化窗口系统  app.exec(): app.exec_()的作用是运行主循环,必须调用此函数才能开始事件处理,调用该

    2024年02月16日
    浏览(40)
  • PyQt6中文手册

    最后更新于 2021.04.22 本教程是 PyQt6 的入门教程。本教程的目的是让您开始使用 PyQt6 库。 关于 PyQt6 PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Qt库是最强大的GUI库之一。PyQt6的官网:www.riverbankcomputing.co.uk/news。PyQt6是由Riverbank Computing公司开发的。 Digia和RiverBank的关系不太清楚,

    2024年02月10日
    浏览(66)
  • 【pyqt6】用pyqt做一个点菜小程序

    在本文中,我们将使用 PyQt6(Python的GUI库)创建一个简单的点菜小程序。该程序允许用户从菜单中选择菜品,将其添加到订单中,并通过点击“下单”按钮查看订单的总价。 随着Python在不同领域的应用不断增加,开发GUI应用程序成为一项重要的技能。PyQt是一个强大的工具,

    2024年01月25日
    浏览(47)
  • pyqt6 + pycharm 搭建+使用入门

            最近要写代码给小白使用,但是让对方装python环境还要运行添加各种库,对小白太不友好了,所以选择了使用pyqt6+pycharm配合生成可视化python程序,在打包成exe执行。         首先安装PyQt6和PyQt6-tools。使用如下命令:        但是运行后会报如下错误:          这

    2024年02月10日
    浏览(44)
  • PyQt6 QMessageBox的使用方法

    放置一个QPushButton就可以。 点击按钮显示QMessageBox

    2024年02月11日
    浏览(37)
  • PyQt6与Pyecharts交互:必要操作

    版本信息: pyecharts 2.0.4 PyQt6 6.6.1 参考链接:怎么查看Python包的位置_mob649e8169b366的技术博客_51CTO博客 1)采用本地资源生成html 步骤一:下载pyecharts-assets-master.zip 下载地址:https://github.com/pyecharts/pyecharts-assets/archive/master.zip 说明:项目文件夹名为class5_3dFigurePyecharts,其中myfig

    2024年02月19日
    浏览(43)
  • pyqt6安装与配置(基于vscode环境)

    注意:pyqt6-tools目前仅支持python3.9版本,3.9版本后的安装部成功。(截止2022.11.20) 安装pyqt和pyqt6-tools可以使用conda和pip进行安装 (1)首先创建python环境 2)激活pyqt_env环境 (3)安装pyqt6和pyqt6-tools,建议使用pip 当看到successfully是表示安装成功。 在安装成功pyqt6后,安装pyqt6-too

    2024年02月15日
    浏览(54)
  • PySide6/PyQt6如何设置全局热键,全局热键!

    我们在使用PySide6/PyQt6设置热键的时候一般都是使用 QShortcut,、QKeySequence 两个类来实现,但是这样写的快键键并不是全局快捷键,需要用户激活软件窗口才能实现快捷键对应的功能,本文将分享如何实现在PySide6/PyQt6软件中设置真正的全局热键 本文演示环境如下,由于测试条件

    2024年01月17日
    浏览(54)
  • PyQt6/PySide6:账本项目前端制作【附完整项目地址】

    最近在家里闲着没事,正好又看到朋友@studentWheat发了篇用Tkinter做的账本,于是决定跟他一起改进这个程序。 屏幕截图: 后端主要是朋友做的,在这里就不多说了,放个代码: src/api.py 详见https://blog.csdn.net/qq_67190987/article/details/125918530。 正如标题中所说,框架采用Qt6+Python,

    2023年04月24日
    浏览(69)
  • PyQt6 与 Pyecharts 交互:将鼠标点击 html 页面某点时的提示框信息在 PyQt 界面显示

    版本信息 PyQt6:6.6.1 pyqt6-tools:6.4.2.3.3 PyQt6-WebEngine:6.6.0 pyqt6 官方文档:Reference Guide — PyQt Documentation v6.6.0 在 PyQt 中,信号signal和槽slot是用来处理事件的机制。 信号是一个对象,当它被发射时,会通知所有连接的槽。槽是一个函数,当信号被发射时,它会被调用。 PyQt中常

    2024年04月26日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包