Pyqt实现简易计算器功能

本文实例为大家分享了Pyqt实现简易计算器的具体代码,供大家参考,具体内容如下

环境:pycharm、python3.7

首先用qtDesigner设计出如下界面。

再用pyUIC将.ui文件转化内.py文件。源码如下

# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file 'calculator.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(726, 592)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.outLine = QtWidgets.QLineEdit(self.centralwidget)
        self.outLine.setGeometry(QtCore.QRect(180, 50, 351, 41))
        self.outLine.setObjectName("outLine")
        self.bt1 = QtWidgets.QPushButton(self.centralwidget)
        self.bt1.setGeometry(QtCore.QRect(190, 110, 61, 61))
        self.bt1.setObjectName("bt1")
        self.bt2 = QtWidgets.QPushButton(self.centralwidget)
        self.bt2.setGeometry(QtCore.QRect(270, 110, 61, 61))
        self.bt2.setObjectName("bt2")
        self.bt3 = QtWidgets.QPushButton(self.centralwidget)
        self.bt3.setGeometry(QtCore.QRect(360, 110, 61, 61))
        self.bt3.setObjectName("bt3")
        self.btPlus = QtWidgets.QPushButton(self.centralwidget)
        self.btPlus.setGeometry(QtCore.QRect(450, 110, 61, 61))
        self.btPlus.setObjectName("btPlus")
        self.bt6 = QtWidgets.QPushButton(self.centralwidget)
        self.bt6.setGeometry(QtCore.QRect(360, 190, 61, 61))
        self.bt6.setObjectName("bt6")
        self.bt5 = QtWidgets.QPushButton(self.centralwidget)
        self.bt5.setGeometry(QtCore.QRect(270, 190, 61, 61))
        self.bt5.setObjectName("bt5")
        self.btSub = QtWidgets.QPushButton(self.centralwidget)
        self.btSub.setGeometry(QtCore.QRect(450, 190, 61, 61))
        self.btSub.setObjectName("btSub")
        self.bt4 = QtWidgets.QPushButton(self.centralwidget)
        self.bt4.setGeometry(QtCore.QRect(190, 190, 61, 61))
        self.bt4.setObjectName("bt4")
        self.bt9 = QtWidgets.QPushButton(self.centralwidget)
        self.bt9.setGeometry(QtCore.QRect(360, 270, 61, 61))
        self.bt9.setObjectName("bt9")
        self.bt8 = QtWidgets.QPushButton(self.centralwidget)
        self.bt8.setGeometry(QtCore.QRect(270, 270, 61, 61))
        self.bt8.setObjectName("bt8")
        self.btMul = QtWidgets.QPushButton(self.centralwidget)
        self.btMul.setGeometry(QtCore.QRect(450, 270, 61, 61))
        self.btMul.setObjectName("btMul")
        self.bt7 = QtWidgets.QPushButton(self.centralwidget)
        self.bt7.setGeometry(QtCore.QRect(190, 270, 61, 61))
        self.bt7.setObjectName("bt7")
        self.btCal = QtWidgets.QPushButton(self.centralwidget)
        self.btCal.setGeometry(QtCore.QRect(360, 340, 61, 61))
        self.btCal.setObjectName("btCal")
        self.bt0 = QtWidgets.QPushButton(self.centralwidget)
        self.bt0.setGeometry(QtCore.QRect(270, 340, 61, 61))
        self.bt0.setObjectName("bt0")
        self.btDiv = QtWidgets.QPushButton(self.centralwidget)
        self.btDiv.setGeometry(QtCore.QRect(450, 340, 61, 61))
        self.btDiv.setObjectName("btDiv")
        self.btClr = QtWidgets.QPushButton(self.centralwidget)
        self.btClr.setGeometry(QtCore.QRect(190, 340, 61, 61))
        self.btClr.setObjectName("btClr")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 726, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.bt1.setText(_translate("MainWindow", "1"))
        self.bt2.setText(_translate("MainWindow", "2"))
        self.bt3.setText(_translate("MainWindow", "3"))
        self.btPlus.setText(_translate("MainWindow", "+"))
        self.bt6.setText(_translate("MainWindow", "6"))
        self.bt5.setText(_translate("MainWindow", "5"))
        self.btSub.setText(_translate("MainWindow", "-"))
        self.bt4.setText(_translate("MainWindow", "4"))
        self.bt9.setText(_translate("MainWindow", "9"))
        self.bt8.setText(_translate("MainWindow", "8"))
        self.btMul.setText(_translate("MainWindow", "*"))
        self.bt7.setText(_translate("MainWindow", "7"))
        self.btCal.setText(_translate("MainWindow", "="))
        self.bt0.setText(_translate("MainWindow", "0"))
        self.btDiv.setText(_translate("MainWindow", "/"))
        self.btClr.setText(_translate("MainWindow", "clear"))

在新建一个py文件引入刚才pyUIC生成的ui文件。写入相关代码,源码如下:

# -*- coding: utf-8 -*-
# @Author:ct
# @ProjectName:calculator.py
# @Desc:
# @Time:
import sys
from calculatorUI import Ui_MainWindow
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
 
 
class mWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(mWindow, self).__init__()
        self.setupUi(self)
 
    # 定义所有按钮事件函数
    def prs_bt0(self):
        self.outLine.insert('0')
 
    def prs_bt1(self):
        self.outLine.insert('1')
 
    def prs_bt2(self):
        self.outLine.insert('2')
 
    def prs_bt3(self):
        self.outLine.insert('3')
 
    def prs_bt4(self):
        self.outLine.insert('4')
 
    def prs_bt5(self):
        self.outLine.insert('5')
 
    def prs_bt6(self):
        self.outLine.insert('6')
 
    def prs_bt7(self):
        self.outLine.insert('7')
 
    def prs_bt8(self):
        self.outLine.insert('8')
 
    def prs_bt9(self):
        self.outLine.insert('9')
 
    def prs_btPlus(self):
        self.outLine.insert('+')
 
    def prs_btSub(self):
        self.outLine.insert('-')
 
    def prs_btMul(self):
        self.outLine.insert('*')
 
    def prs_btDiv(self):
        self.outLine.insert('/')
 
    def prs_btClr(self):
        self.outLine.clear()
 
    # 计算表达式事件,通过eval函数将字符串表达式计算
    def prs_btCal(self):
        # 获得输入框的内容(字符串形式)
        exp = self.outLine.text()
        res = eval(exp)
        self.outLine.insert('=')
        self.outLine.insert(str(res))
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = mWindow()
    # mainWindow.outLine.setEnabled(False)
    # 使输出框只能被读取,不能输入内容
    mainWindow.outLine.setReadOnly(True)
    # 关联所有按钮事件
    mainWindow.bt0.clicked.connect(mainWindow.prs_bt0)
    mainWindow.bt1.clicked.connect(mainWindow.prs_bt1)
    mainWindow.bt2.clicked.connect(mainWindow.prs_bt2)
    mainWindow.bt3.clicked.connect(mainWindow.prs_bt3)
    mainWindow.bt4.clicked.connect(mainWindow.prs_bt4)
    mainWindow.bt5.clicked.connect(mainWindow.prs_bt5)
    mainWindow.bt6.clicked.connect(mainWindow.prs_bt6)
    mainWindow.bt7.clicked.connect(mainWindow.prs_bt7)
    mainWindow.bt8.clicked.connect(mainWindow.prs_bt8)
    mainWindow.bt9.clicked.connect(mainWindow.prs_bt9)
    mainWindow.btPlus.clicked.connect(mainWindow.prs_btPlus)
    mainWindow.btDiv.clicked.connect(mainWindow.prs_btDiv)
    mainWindow.btMul.clicked.connect(mainWindow.prs_btMul)
    mainWindow.btSub.clicked.connect(mainWindow.prs_btSub)
    mainWindow.btCal.clicked.connect(mainWindow.prs_btCal)
    mainWindow.btClr.clicked.connect(mainWindow.prs_btClr)
 
    mainWindow.show()
    # 让程序循环运行
    sys.exit(app.exec_())

运行程序,结果如下:

可进行简单的运算。当然还有诸多bug,如输入错误表达式不能容错等,待以后修复。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python 简易计算器程序,代码就几行

    代码: 复制代码 代码如下: import os while True: dynamic = input('输入计算表达式:') if dynamic != 'cls': try: result = eval(dynamic) print('计算结果:'+str(result)) except: print('计算表达式输入有误!') else: command = 'cls' os.system(command)

  • Python制作简易计算器功能

    本文实例为大家分享了Python制作简易计算器的具体代码,供大家参考,具体内容如下 简易计算器 简易计算器功能: 实现输入,计算,输出功能: 可以计算基本的加减乘除功能: 处理除法中除数不能为零的设计: 处理输入不能为空的设计: 记录历史计算,显示在右边文本框: 不同于之前的两个项目,这个项目的布局是网格布局,窗口的设计比较像,但是实际的网格布局实现过程中也是碰了许多的坑. 窗口 实现最基本的窗口界面 import tkinter as tk import tkinter.messagebox

  • 利用Tkinter(python3.6)实现一个简单计算器

    前言 上机实践课程开始了,嗯,老师来了之后念了下PPT,然后说:开始做吧......... 然后就开始了Python的GUI之路,以前没接触过PYthon的可视化界面(虽然这样很不明智) 但是现在做起来感觉写小工具还挺方便的,当时搜到的第一个库便是Tkinter就直接开始写了 后来发现QT很不错的样子,下个实验就用QT吧.然后关于Tkinter(python3.6) 计算器源码 ennn.....有的命名不规范....... 首先对于python中栈的实现是通过list的方式模拟 pop()出栈

  • python制作简单计算器功能

    本文实例为大家分享了python实现简单计算器功能的具体代码,供大家参考,具体内容如下 效果如图: 主要思路: 用列表保存按下的键,按下等于,转换为字符串,利用内置函数eval计算字符串的值. 代码: from tkinter import *   W = 280 #窗口宽度 H = 460 #窗口高度 process_H = 110 #显示运算过程的标签高度 result_H = 50   #显示运算结果的标签高度 msFont = '微软雅黑' #字体 fontSize = 20 #字体大小

  • python实现简易版计算器

    学了一周的Python,这篇文章算是为这段时间自学做的小总结. 一.Python简介 Python是一门十分优美的脚本语言,如果学过java.c++那入门Python是非常简单的.Python具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起.常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写. 二.Python版计算器的实现 工具准备: 1.

  • 基于python的Tkinter实现一个简易计算器

    本文实例介绍了基于python的Tkinter实现简易计算器的详细代码,分享给大家供大家参考,具体内容如下 第一种:使用python 的 Tkinter实现一个简易计算器 #coding:utf-8 from Tkinter import * import time root = Tk() def cacl(input_str): if "x" in input_str: ret = input_str.split("x") return int(ret[0]) *

  • Python实现简单的四则运算计算器

    一.算法 1.算法的主要思想就是将一个中缀表达式(Infix expression)转换成便于处理的后缀表达式(Postfix expression),然后借助于栈这个简单的数据结构,计算出表达式的结果. 2.关于如何讲普通的表达式转换成后缀表达式,以及如何处理后缀表达式并计算出结果的具体算法描述不在此叙述了,书上有详细的说明. 二.简易计算器 使用说明 使用该计算器类的简单示例如下: # usage c = Calculator() print('result: {:f}'.formart(c

  • python tkinter实现简单计算器功能

    本文实例为大家分享了python tkinter实现简单计算器的具体代码,供大家参考,具体内容如下 效果图 直接上代码 import tkinter as tk input_num_ls = [] first_num = None calculator_method = None def get_num(ls):     new_ls = [10 ** i * float(num) for i, num in enumerate(ls)]     ls_sum = sum(new_ls)    

  • python实现简易计算器功能

    本文实例为大家分享了python实现简易计算器功能的具体代码,供大家参考,具体内容如下 一.功能目标 用户输入一个类似  1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))  这样的表达式,假设表达式里面除了包含空格.'+'.'-'.'*'.'/'和括号再无其他特殊符号,然后自己动手写代码解析其中的表达式,实现加减乘除,最后得出的结果与真实的计算机所算的结果必须一致. 二.解题思路 1.为了分开运算符和数

  • Python tkinter实现计算器功能

    本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下 python版本:3.5 一.计算器的功能描述 今天我们用python来实现一个计算器.首先,计算器分为两部分:一部分是初级页面,包括简单的加减乘除四则运算.第二部分:是高级页面,包括常见的三角函数.对数.括号.等参数运算.其次,在初级页面,能进行简单的初级运算,并在初级页面设置高级按钮,并让其高亮显示,用户点击高级按钮后,会切换到高级页面.来到高级页面,让扩展的功能高亮显示,同时可以参加高级运

随机推荐