PyQt5实现简易计算器
程序员文章站
2022-12-24 17:30:56
本文实例为大家分享了pyqt5实现简易计算器的具体代码,供大家参考,具体内容如下
效果图:
界面代码
calc_interface.py
# -*-...
本文实例为大家分享了pyqt5实现简易计算器的具体代码,供大家参考,具体内容如下
效果图:
界面代码
calc_interface.py
# -*- coding: utf-8 -*- # form implementation generated from reading ui file 'calc_interface.ui' # # created by: pyqt5 ui code generator 5.8.2 # # 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(647, 675) self.centralwidget = qtwidgets.qwidget(mainwindow) self.centralwidget.setobjectname("centralwidget") self.b_1 = qtwidgets.qpushbutton(self.centralwidget) self.b_1.setgeometry(qtcore.qrect(10, 330, 71, 71)) self.b_1.setobjectname("b_1") self.b_2 = qtwidgets.qpushbutton(self.centralwidget) self.b_2.setgeometry(qtcore.qrect(80, 330, 71, 71)) self.b_2.setobjectname("b_2") self.b_3 = qtwidgets.qpushbutton(self.centralwidget) self.b_3.setgeometry(qtcore.qrect(150, 330, 71, 71)) self.b_3.setobjectname("b_3") self.b_6 = qtwidgets.qpushbutton(self.centralwidget) self.b_6.setgeometry(qtcore.qrect(150, 400, 71, 71)) self.b_6.setobjectname("b_6") self.b_4 = qtwidgets.qpushbutton(self.centralwidget) self.b_4.setgeometry(qtcore.qrect(10, 400, 71, 71)) self.b_4.setobjectname("b_4") self.b_5 = qtwidgets.qpushbutton(self.centralwidget) self.b_5.setgeometry(qtcore.qrect(80, 400, 71, 71)) self.b_5.setobjectname("b_5") self.b_8 = qtwidgets.qpushbutton(self.centralwidget) self.b_8.setgeometry(qtcore.qrect(80, 470, 71, 71)) self.b_8.setobjectname("b_8") self.b_9 = qtwidgets.qpushbutton(self.centralwidget) self.b_9.setgeometry(qtcore.qrect(150, 470, 71, 71)) self.b_9.setobjectname("b_9") self.b_7 = qtwidgets.qpushbutton(self.centralwidget) self.b_7.setgeometry(qtcore.qrect(10, 470, 71, 71)) self.b_7.setobjectname("b_7") self.b_eq = qtwidgets.qpushbutton(self.centralwidget) self.b_eq.setgeometry(qtcore.qrect(150, 540, 211, 71)) self.b_eq.setobjectname("b_eq") self.b_mod = qtwidgets.qpushbutton(self.centralwidget) self.b_mod.setgeometry(qtcore.qrect(220, 400, 71, 71)) self.b_mod.setobjectname("b_mod") self.b_bra_l = qtwidgets.qpushbutton(self.centralwidget) self.b_bra_l.setgeometry(qtcore.qrect(220, 330, 71, 71)) self.b_bra_l.setobjectname("b_bra_l") self.b_div = qtwidgets.qpushbutton(self.centralwidget) self.b_div.setgeometry(qtcore.qrect(220, 260, 71, 71)) self.b_div.setobjectname("b_div") self.b_add = qtwidgets.qpushbutton(self.centralwidget) self.b_add.setgeometry(qtcore.qrect(10, 260, 71, 71)) self.b_add.setobjectname("b_add") self.b_sub = qtwidgets.qpushbutton(self.centralwidget) self.b_sub.setgeometry(qtcore.qrect(80, 260, 71, 71)) self.b_sub.setobjectname("b_sub") self.b_mul = qtwidgets.qpushbutton(self.centralwidget) self.b_mul.setgeometry(qtcore.qrect(150, 260, 71, 71)) self.b_mul.setobjectname("b_mul") self.b_pow = qtwidgets.qpushbutton(self.centralwidget) self.b_pow.setgeometry(qtcore.qrect(290, 260, 71, 71)) self.b_pow.setobjectname("b_pow") self.b_pai = qtwidgets.qpushbutton(self.centralwidget) self.b_pai.setgeometry(qtcore.qrect(290, 400, 71, 71)) self.b_pai.setobjectname("b_pai") self.b_bra_r = qtwidgets.qpushbutton(self.centralwidget) self.b_bra_r.setgeometry(qtcore.qrect(290, 330, 71, 71)) self.b_bra_r.setobjectname("b_bra_r") self.l_hist = qtwidgets.qlistwidget(self.centralwidget) self.l_hist.setgeometry(qtcore.qrect(380, 10, 256, 601)) self.l_hist.setobjectname("l_hist") self.e_view = qtwidgets.qtextedit(self.centralwidget) self.e_view.setgeometry(qtcore.qrect(10, 10, 351, 231)) font = qtgui.qfont() font.setfamily("adobe caslon pro bold") font.setpointsize(22) font.setbold(true) font.setweight(75) self.e_view.setfont(font) self.e_view.setobjectname("e_view") self.b_0 = qtwidgets.qpushbutton(self.centralwidget) self.b_0.setgeometry(qtcore.qrect(80, 540, 71, 71)) self.b_0.setobjectname("b_0") self.b_pt = qtwidgets.qpushbutton(self.centralwidget) self.b_pt.setgeometry(qtcore.qrect(10, 540, 71, 71)) self.b_pt.setobjectname("b_pt") self.b_del = qtwidgets.qpushbutton(self.centralwidget) self.b_del.setgeometry(qtcore.qrect(220, 470, 71, 71)) self.b_del.setobjectname("b_del") self.b_clc = qtwidgets.qpushbutton(self.centralwidget) self.b_clc.setgeometry(qtcore.qrect(290, 470, 71, 71)) self.b_clc.setobjectname("b_clc") mainwindow.setcentralwidget(self.centralwidget) self.menubar = qtwidgets.qmenubar(mainwindow) self.menubar.setgeometry(qtcore.qrect(0, 0, 647, 30)) 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.b_1.settext(_translate("mainwindow", "1")) self.b_2.settext(_translate("mainwindow", "2")) self.b_3.settext(_translate("mainwindow", "3")) self.b_6.settext(_translate("mainwindow", "6")) self.b_4.settext(_translate("mainwindow", "4")) self.b_5.settext(_translate("mainwindow", "5")) self.b_8.settext(_translate("mainwindow", "8")) self.b_9.settext(_translate("mainwindow", "9")) self.b_7.settext(_translate("mainwindow", "7")) self.b_eq.settext(_translate("mainwindow", "=")) self.b_mod.settext(_translate("mainwindow", "%")) self.b_bra_l.settext(_translate("mainwindow", "(")) self.b_div.settext(_translate("mainwindow", "/")) self.b_add.settext(_translate("mainwindow", "+")) self.b_sub.settext(_translate("mainwindow", "-")) self.b_mul.settext(_translate("mainwindow", "*")) self.b_pow.settext(_translate("mainwindow", "^")) self.b_pai.settext(_translate("mainwindow", "π")) self.b_bra_r.settext(_translate("mainwindow", ")")) self.b_0.settext(_translate("mainwindow", "0")) self.b_pt.settext(_translate("mainwindow", ".")) self.b_del.settext(_translate("mainwindow", "删除")) self.b_clc.settext(_translate("mainwindow", "清空"))
主逻辑代码
calc_main.py
from pyqt5.qtcore import * from pyqt5.qtgui import * from pyqt5.qtwidgets import * from calc_interface import ui_mainwindow import os,sys global e_view pluginspath='pyqt5/qt/plugins' if os.path.exists(pluginspath):#指定插件路径。源码运行时不会生效,打包后运行检测到路径,加载插件 qapplication.addlibrarypath(pluginspath) class mymainwindow(qmainwindow, ui_mainwindow): def forge_link(self): self.b_0.clicked.connect(self.button_event(0)) self.b_1.clicked.connect(self.button_event(1)) self.b_2.clicked.connect(self.button_event(2)) self.b_3.clicked.connect(self.button_event(3)) self.b_4.clicked.connect(self.button_event(4)) self.b_5.clicked.connect(self.button_event(5)) self.b_6.clicked.connect(self.button_event(6)) self.b_7.clicked.connect(self.button_event(7)) self.b_8.clicked.connect(self.button_event(8)) self.b_9.clicked.connect(self.button_event(9)) self.b_add.clicked.connect(self.button_event('+')) self.b_sub.clicked.connect(self.button_event('-')) self.b_mul.clicked.connect(self.button_event('*')) self.b_div.clicked.connect(self.button_event('/')) self.b_pow.clicked.connect(self.button_event('**')) self.b_bra_l.clicked.connect(self.button_event('(')) self.b_bra_r.clicked.connect(self.button_event(')')) self.b_mod.clicked.connect(self.button_event('%')) self.b_pai.clicked.connect(self.button_event('3.1415926')) self.b_pt.clicked.connect(self.button_event('.')) self.b_del.clicked.connect(self.delete_event) self.b_clc.clicked.connect(self.clear_event) self.b_eq.clicked.connect(self.calc_complish) def __init__(self, parent=none): super(mymainwindow, self).__init__(parent) self.setupui(self) self.forge_link() #连接槽函数 def button_event(self,arg): # print(dir(self.e_view)) global e_view e_view=self.e_view def fun(): #返回一个自定义的槽函数 global e_view txt = e_view.toplaintext() e_view.settext(txt + str(arg)) return fun def calc_complish(self): txt=self.e_view.toplaintext() ans='' try: ans=str(eval(txt)) except baseexception: ans='matherror' # print(ans) self.clear_event() self.e_view.settext(ans) self.l_hist.additem(txt+'='+ans) def clear_event(self): self.e_view.settext('') def delete_event(self): txt = self.e_view.toplaintext() txt=txt[:len(txt)-1] self.e_view.settext(txt) if __name__ == '__main__': app=qapplication(sys.argv) mywin=mymainwindow() mywin.show() sys.exit(app.exec())
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 杨延昭是怎么死的?连皇上都惋惜