python qt5 第二个gui编写-----简易计算器

python qt5 第二个gui----简易计算器

笔者运行工作环境
Ubuntu18.04
Python qt5
Python3.6.9

gui界面以及全部代码

下边是通过qt designer设计的gui界面。
在这里插入图片描述
下边是全部代码

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '/home/li/桌面/python/qt/calcultor/calcultor.ui'
#
# Created by: PyQt5 UI code generator 5.12
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
import sys,os

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(575, 443)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.result = QtWidgets.QTextEdit(self.centralwidget)
        self.result.setGeometry(QtCore.QRect(120, 50, 331, 70))
        self.result.setObjectName("result")
        self.pushButton_1 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_1.setGeometry(QtCore.QRect(120, 270, 51, 41))
        self.pushButton_1.setObjectName("pushButton_1")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(190, 270, 51, 41))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(260, 270, 51, 41))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(120, 210, 51, 41))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(190, 210, 51, 41))
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(260, 210, 51, 41))
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_7.setGeometry(QtCore.QRect(120, 150, 51, 41))
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_8.setGeometry(QtCore.QRect(190, 150, 51, 41))
        self.pushButton_8.setObjectName("pushButton_8")
        self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_9.setGeometry(QtCore.QRect(260, 150, 51, 41))
        self.pushButton_9.setObjectName("pushButton_9")
        self.pushButton_0 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_0.setGeometry(QtCore.QRect(120, 330, 51, 41))
        self.pushButton_0.setObjectName("pushButton_0")
        self.pushButton_00 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_00.setGeometry(QtCore.QRect(190, 330, 51, 41))
        self.pushButton_00.setObjectName("pushButton_00")
        self.pushButton_dian = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_dian.setGeometry(QtCore.QRect(260, 330, 51, 41))
        self.pushButton_dian.setObjectName("pushButton_dian")
        self.pushButton_dengyu = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_dengyu.setGeometry(QtCore.QRect(400, 260, 51, 111))
        self.pushButton_dengyu.setObjectName("pushButton_dengyu")
        self.pushButton_clear = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_clear.setGeometry(QtCore.QRect(400, 150, 51, 101))
        self.pushButton_clear.setObjectName("pushButton_clear")
        self.pushButton_add = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_add.setGeometry(QtCore.QRect(330, 330, 51, 41))
        self.pushButton_add.setObjectName("pushButton_add")
        self.pushButton_subtract = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_subtract.setGeometry(QtCore.QRect(330, 270, 51, 41))
        self.pushButton_subtract.setObjectName("pushButton_subtract")
        self.pushButton_multiply = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_multiply.setGeometry(QtCore.QRect(330, 210, 51, 41))
        self.pushButton_multiply.setObjectName("pushButton_multiply")
        self.pushButton_besides = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_besides.setGeometry(QtCore.QRect(330, 150, 51, 41))
        self.pushButton_besides.setObjectName("pushButton_besides")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.menuBar = QtWidgets.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 575, 28))
        self.menuBar.setObjectName("menuBar")
        self.menucalculator = QtWidgets.QMenu(self.menuBar)
        self.menucalculator.setObjectName("menucalculator")
        MainWindow.setMenuBar(self.menuBar)
        self.menuBar.addAction(self.menucalculator.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.result.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Ubuntu\'; font-size:11pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
        self.pushButton_1.setText(_translate("MainWindow", "1"))
        self.pushButton_2.setText(_translate("MainWindow", "2"))
        self.pushButton_3.setText(_translate("MainWindow", "3"))
        self.pushButton_4.setText(_translate("MainWindow", "4"))
        self.pushButton_5.setText(_translate("MainWindow", "5"))
        self.pushButton_6.setText(_translate("MainWindow", "6"))
        self.pushButton_7.setText(_translate("MainWindow", "7"))
        self.pushButton_8.setText(_translate("MainWindow", "8"))
        self.pushButton_9.setText(_translate("MainWindow", "9"))
        self.pushButton_0.setText(_translate("MainWindow", "0"))
        self.pushButton_00.setText(_translate("MainWindow", "00"))
        self.pushButton_dian.setText(_translate("MainWindow", "."))
        self.pushButton_dengyu.setText(_translate("MainWindow", "="))
        self.pushButton_clear.setText(_translate("MainWindow", "clear"))
        self.pushButton_add.setText(_translate("MainWindow", "+"))
        self.pushButton_subtract.setText(_translate("MainWindow", "-"))
        self.pushButton_multiply.setText(_translate("MainWindow", "x"))
        self.pushButton_besides.setText(_translate("MainWindow", "/"))
        self.menucalculator.setTitle(_translate("MainWindow", "calculator"))






class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
    
    def __init__(self):
        super(mywindow,self).__init__()
        self.setupUi(self)
        self.pushButton_clear.clicked.connect(self.clear_event)
        self.pushButton_0.clicked.connect(self.button_event(0))
        self.pushButton_1.clicked.connect(self.button_event(1))
        self.pushButton_2.clicked.connect(self.button_event(2))
        self.pushButton_3.clicked.connect(self.button_event(3))
        self.pushButton_4.clicked.connect(self.button_event(4))
        self.pushButton_5.clicked.connect(self.button_event(5))
        self.pushButton_6.clicked.connect(self.button_event(6))
        self.pushButton_7.clicked.connect(self.button_event(7))
        self.pushButton_8.clicked.connect(self.button_event(8))
        self.pushButton_9.clicked.connect(self.button_event(9))
        self.pushButton_dian.clicked.connect(self.button_event('.'))
        self.pushButton_add.clicked.connect(self.button_event('+'))
        self.pushButton_subtract.clicked.connect(self.button_event('-'))
        self.pushButton_multiply.clicked.connect(self.button_event('*'))
        self.pushButton_besides.clicked.connect(self.button_event('/'))
        self.pushButton_00.clicked.connect(self.button_event('00'))
        self.pushButton_dengyu.clicked.connect(self.calc_complish)

    def button_event(self,arg):
        # print(dir(self.e_view))
        global result
        result=self.result
        def fun():      #返回一个自定义的槽函数
            global result
            txt = result.toPlainText()
            result.setText(txt + str(arg))
        return fun

    def calc_complish(self):
        txt=self.result.toPlainText()
        ans=''
        try:
            ans=str(eval(txt))
        except BaseException:
            ans='MathError'
        # print(ans)
        self.clear_event()
        self.result.setText(ans)

    def clear_event(self):
        self.result.setText('')

app = QtWidgets.QApplication(sys.argv)
#MainWindow = QMainWindow()
window = mywindow()
window.show()
sys.exit(app.exec_())

代码讲解

1.在代码最前边的部分导入import sys

import sys,os

2.代码后半部分编写

class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
    
    def __init__(self):
        super(mywindow,self).__init__()
        self.setupUi(self)
        
        #将按钮点击与事件连接起来
        self.pushButton_clear.clicked.connect(self.clear_event)
        self.pushButton_0.clicked.connect(self.button_event(0))
        self.pushButton_1.clicked.connect(self.button_event(1))
        self.pushButton_2.clicked.connect(self.button_event(2))
        self.pushButton_3.clicked.connect(self.button_event(3))
        self.pushButton_4.clicked.connect(self.button_event(4))
        self.pushButton_5.clicked.connect(self.button_event(5))
        self.pushButton_6.clicked.connect(self.button_event(6))
        self.pushButton_7.clicked.connect(self.button_event(7))
        self.pushButton_8.clicked.connect(self.button_event(8))
        self.pushButton_9.clicked.connect(self.button_event(9))
        self.pushButton_dian.clicked.connect(self.button_event('.'))
        self.pushButton_add.clicked.connect(self.button_event('+'))
        self.pushButton_subtract.clicked.connect(self.button_event('-'))
        self.pushButton_multiply.clicked.connect(self.button_event('*'))
        self.pushButton_besides.clicked.connect(self.button_event('/'))
        self.pushButton_00.clicked.connect(self.button_event('00'))
        self.pushButton_dengyu.clicked.connect(self.calc_complish)

  #定义函数,此部分将按钮与数值或者运算符联系起来
    def button_event(self,arg):
        # print(dir(self.result))
        global result
        result=self.result
        def fun():      #返回一个自定义的槽函数
            global result
            txt = result.toPlainText()
            result.setText(txt + str(arg))
        return fun
  
  #定义了完成运算的函数,此函数连接‘等于’按钮,并且将结果输出到result的窗口。
    def calc_complish(self):
        txt=self.result.toPlainText()
        ans=''
        try:
            ans=str(eval(txt))
        except BaseException:
            ans='MathError'
        # print(ans)
        self.clear_event()
        self.result.setText(ans)
  #定义了清除窗口中数值的函数,此函数连接‘clear’按钮。
    def clear_event(self):
        self.result.setText('')
        
#将创建的gui实例化
app = QtWidgets.QApplication(sys.argv)
#MainWindow = QMainWindow()
window = mywindow()
window.show()
sys.exit(app.exec_())

参考连接

用PyQt5开发一个简易的计算器
本文重点参考,其中借鉴了一部分代码。

使用PyQt5编写一个简易的计算器
此部分编写的简易计算器可以看一下。

Python-PyQt5-图形可视化界面(3)–按钮–Qpushbutton
其中有一部分按钮的使用不是很清楚,可以参考此链接。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

求知小菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值