当前位置: 移动技术网 > IT编程>脚本编程>Python > PyQt5实现简易计算器

PyQt5实现简易计算器

2019年06月12日  | 移动技术网IT编程  | 我要评论

97色婷婷,yy6080电影网站,领结婚证需要带什么证件

本文实例为大家分享了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())

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网