PyQt实现简单的计算器
发布时间:2020-05-25 00:44:55 所属栏目:Python 来源:互联网
导读:PyQt实现简单的计算器
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 #coding=utf-8
from __future__ import division
import sys
from PyQt4 import QtGui,QtCore
########################################################################
class Example(QtGui.QWidget):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
super(Example,self).__init__()
self.initUI()
#----------------------------------------------------------------------
def initUI(self):
""""""
self.flag = 0
self.flag_equ = 0
self.flag_add = 0 #加
self.flag_sub = 0 #减
self.flag_mul = 0 #乘
self.flag_div = 0 #除
self.flag_flag = ''
self.num_1 = '0'
self.num_2 = ''
self.num_3 = ''
global lcd
lcd = QtGui.QTextBrowser()
lcd.setFixedHeight(190)
lcd.setFont(QtGui.QFont("Microsoft YaHei",20))
#lcd.setFixedWidth(100)
lcd.setText('0'.decode('utf-8'))
grid = QtGui.QGridLayout()
self.setLayout(grid)
#self.setMinimumSize(300,300)
#self.setMaximumSize(300,300)
#self.setGeometry( 200,100,200,200 )
grid.setSpacing(0)
grid.addWidget(lcd,1,4)
button_1 = QtGui.QPushButton('1')
button_2 = QtGui.QPushButton('2')
button_3 = QtGui.QPushButton('3')
button_4 = QtGui.QPushButton('4')
button_5 = QtGui.QPushButton('5')
button_6 = QtGui.QPushButton('6')
button_7 = QtGui.QPushButton('7')
button_8 = QtGui.QPushButton('8')
button_9 = QtGui.QPushButton('9')
button_0 = QtGui.QPushButton('0')
button_dot = QtGui.QPushButton('.')
button_equ = QtGui.QPushButton('=')
button_div = QtGui.QPushButton('/')
button_mul = QtGui.QPushButton('*')
button_add = QtGui.QPushButton('+')
button_sub = QtGui.QPushButton('-')
button_cls = QtGui.QPushButton('cls')
button_0.setFixedSize(50,50)
button_1.setFixedSize(50,50)
button_2.setFixedSize(50,50)
button_3.setFixedSize(50,50)
button_4.setFixedSize(50,50)
button_5.setFixedSize(50,50)
button_6.setFixedSize(50,50)
button_7.setFixedSize(50,50)
button_8.setFixedSize(50,50)
button_9.setFixedSize(50,50)
button_dot.setFixedSize(50,50)
button_equ.setFixedSize(200,50)
button_div.setFixedSize(50,50)
button_mul.setFixedSize(50,50)
button_add.setFixedSize(50,50)
button_sub.setFixedSize(50,50)
button_cls.setFixedSize(50,50)
button_0.setFont(QtGui.QFont("Microsoft YaHei",16))
button_1.setFont(QtGui.QFont("Microsoft YaHei",16))
button_2.setFont(QtGui.QFont("Microsoft YaHei",16))
button_3.setFont(QtGui.QFont("Microsoft YaHei",16))
button_4.setFont(QtGui.QFont("Microsoft YaHei",16))
button_5.setFont(QtGui.QFont("Microsoft YaHei",16))
button_6.setFont(QtGui.QFont("Microsoft YaHei",16))
button_7.setFont(QtGui.QFont("Microsoft YaHei",16))
button_8.setFont(QtGui.QFont("Microsoft YaHei",16))
button_9.setFont(QtGui.QFont("Microsoft YaHei",16))
button_dot.setFont(QtGui.QFont("Microsoft YaHei",16))
button_equ.setFont(QtGui.QFont("Microsoft YaHei",16))
button_div.setFont(QtGui.QFont("Microsoft YaHei",16))
button_mul.setFont(QtGui.QFont("Microsoft YaHei",16))
button_add.setFont(QtGui.QFont("Microsoft YaHei",16))
button_sub.setFont(QtGui.QFont("Microsoft YaHei",16))
button_cls.setFont(QtGui.QFont("Microsoft YaHei",16))
grid.addWidget(button_7,0)
grid.addWidget(button_8,1)
grid.addWidget(button_9,2)
grid.addWidget(button_div,3)
grid.addWidget(button_4,2,0)
grid.addWidget(button_5,1)
grid.addWidget(button_6,2)
grid.addWidget(button_mul,3)
grid.addWidget(button_1,3,0)
grid.addWidget(button_2,1)
grid.addWidget(button_3,2)
grid.addWidget(button_sub,3)
grid.addWidget(button_0,4,0)
grid.addWidget(button_dot,1)
grid.addWidget(button_cls,2)
grid.addWidget(button_add,3)
grid.addWidget(button_equ,5,4)
self.move(300,400)
self.setWindowTitle('Calculator')
grid.setSizeConstraint(QtGui.QLayout.SetFixedSize)
self.show()
self.connect(button_0,QtCore.SIGNAL('clicked()'),self.func_button_0)
self.connect(button_1,self.func_button_1)
self.connect(button_2,self.func_button_2)
self.connect(button_3,self.func_button_3)
self.connect(button_4,self.func_button_4)
self.connect(button_5,self.func_button_5)
self.connect(button_6,self.func_button_6)
self.connect(button_7,self.func_button_7)
self.connect(button_8,self.func_button_8)
self.connect(button_9,self.func_button_9)
self.connect(button_cls,self.func_button_cls)
self.connect(button_dot,self.func_button_dot)
self.connect(button_add,self.func_button_add)
self.connect(button_sub,self.func_button_sub)
self.connect(button_mul,self.func_button_mul)
self.connect(button_div,self.func_button_div)
self.connect(button_equ,self.func_button_equ)
#----------------------------------------------------------------------
def keyPressEvent(self,event):
""""""
if event.key() == QtCore.Qt.Key_Escape:
self.close()
if event.key() == QtCore.Qt.Key_0:
self.func_button_0()
if event.key() == QtCore.Qt.Key_1:
self.func_button_1()
if event.key() == QtCore.Qt.Key_2:
self.func_button_2()
if event.key() == QtCore.Qt.Key_3:
self.func_button_3()
if event.key() == QtCore.Qt.Key_4:
self.func_button_4()
if event.key() == QtCore.Qt.Key_5:
self.func_button_5()
if event.key() == QtCore.Qt.Key_6:
self.func_button_6()
if event.key() == QtCore.Qt.Key_7:
self.func_button_7()
if event.key() == QtCore.Qt.Key_8:
self.func_button_8()
if event.key() == QtCore.Qt.Key_9:
self.func_button_9()
if event.key() == QtCore.Qt.Key_Period:
self.func_button_dot()
if event.key() == QtCore.Qt.Key_Enter:
self.func_button_equ()
if event.key() == QtCore.Qt.Key_Plus:
self.func_button_add()
if event.key() == QtCore.Qt.Key_Minus:
self.func_button_sub()
if event.key() == QtCore.Qt.Key_Asterisk:
self.func_button_mul()
if event.key() == QtCore.Qt.Key_Slash:
self.func_button_div()
if event.key() == QtCore.Qt.Key_C:
self.func_button_cls()
#----------------------------------------------------------------------
def func_button_0(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0': #防止在QLineEdit里连续出现 0 ,比如 000.1
self.num_1 = '0'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1+'0'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '0'
else:
self.num_2 = self.num_2+'0'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1 #Important:点击等号之后,除clear按键以外的按键都失效,用pass代替也可以,这里只是为了方便以后添加更多功能所以用了flag
#----------------------------------------------------------------------
def func_button_1(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '1'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '1'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '1'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '1'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_2(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '2'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '2'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '2'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '2'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_3(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '3'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '3'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '3'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '3'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_4(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '4'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '4'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '4'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '4'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_5(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '5'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '5'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '3'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '5'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_6(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '6'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '6'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '6'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '6'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_7(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '7'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '7'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '7'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '7'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_8(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '8'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '8'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '8'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '8'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_9(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '9'
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '9'
lcd.setText(self.num_1)
else:
if self.num_2 == '0' or '':
self.num_2 = '9'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '9'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_dot(self):
""""""
if self.flag_equ == 0:
if self.flag == 0:
if '.' not in self.num_1:
if self.num_1 == '0':
self.num_1 = '0.'
print self.num_1
lcd.setText(self.num_1)
else:
self.num_1 = self.num_1 + '.'
lcd.setText(self.num_1)
else:
if '.' not in self.num_2:
if self.num_2 == '':
self.num_2 = '0.'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.num_2 = self.num_2 + '.'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else :
self.flag_equ =1
#----------------------------------------------------------------------
def func_button_cls(self):
""""""
self.num_1 = '0'
self.num_2 = ''
self.flag = 0
self.flag_equ = 0
self.flag_add = 0
self.flag_sub = 0
self.flag_mul = 0
self.flag_div = 0
lcd.setText(self.num_1)
#----------------------------------------------------------------------
def func_button_add(self):
""""""
if self.flag == 0:
self.flag = 1
self.flag_add = 1
self.flag_sub = 0
self.flag_mul = 0
self.flag_div = 0
self.flag_flag = '+'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
pass
#----------------------------------------------------------------------
def func_button_sub(self):
""""""
if self.flag == 0:
if self.num_1 == '0':
self.num_1 = '-'
lcd.setText(self.num_1)
#elif self.num_2 == '':
#self.num_2 = '-'
#lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
self.flag = 1
self.flag_add = 0
self.flag_sub = 1
self.flag_mul = 0
self.flag_div = 0
self.flag_flag = '-'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
if self.num_2 == '':
self.num_2 = '-'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
#----------------------------------------------------------------------
def func_button_mul(self):
""""""
if self.flag == 0:
self.flag = 1
self.flag_add = 0
self.flag_sub = 0
self.flag_mul = 1
self.flag_div = 0
self.flag_flag = '*'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
pass
#----------------------------------------------------------------------
def func_button_div(self):
""""""
if self.flag == 0:
self.flag = 1
self.flag_add = 0
self.flag_sub = 0
self.flag_mul = 0
self.flag_div = 1
self.flag_flag = '/'
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2)
else:
pass
#----------------------------------------------------------------------
def func_button_equ(self):
""""""
if self.flag == 1:
if self.flag_flag == '+':
if '.' in self.num_1:
self.num_3 = str(float(self.num_1) + float(self.num_2))
if '.' not in self.num_1:
if '.' not in self.num_2:
self.num_3 = str(int(self.num_1) + int(self.num_2))
elif '.' in self.num_2:
self.num_3 = str(float(self.num_1) + float(self.num_2))
else:
self.num_3 = str(int(self.num_1) + int(self.num_2))
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2 + 'n=n' + self.num_3)
self.flag = 0
self.num_1 = '0'
self.num_2 = ''
self.num_3 = ''
elif self.flag_flag == '-':
if '.' in self.num_1:
self.num_3 = str(float(self.num_1) - float(self.num_2))
if '.' not in self.num_1:
if '.' not in self.num_2:
self.num_3 = str(int(self.num_1) - int(self.num_2))
elif '.' in self.num_2:
self.num_3 = str(float(self.num_1) - float(self.num_2))
else:
self.num_3 = str(int(self.num_1) - int(self.num_2))
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2 + 'n=n' + self.num_3)
self.flag = 0
self.num_1 = '0'
self.num_2 = ''
self.num_3 = ''
elif self.flag_flag == '*':
if '.' in self.num_1:
self.num_3 = str(float(self.num_1) * float(self.num_2))
if '.' not in self.num_1:
if '.' not in self.num_2:
self.num_3 = str(int(self.num_1) * int(self.num_2))
elif '.' in self.num_2:
self.num_3 = str(float(self.num_1) * float(self.num_2))
else:
self.num_3 = str(int(self.num_1) * int(self.num_2))
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2 + 'n=n' + self.num_3)
self.flag = 0
self.num_1 = '0'
self.num_2 = ''
self.num_3 = ''
elif self.flag_flag == '/':
if self.num_2 == '0':
lcd.setText("0不能作为除数!".decode('utf-8'))
self.flag = 0
self.num_1 = '0'
self.num_2 = ''
self.num_3 = ''
else:
self.num_3 = float(self.num_1) / float(self.num_2)
if (self.num_3 * 10) % 10 == 0:
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2 + 'n=n' + str(int(self.num_3)))
self.flag = 0
self.num_1 = '0'
self.num_2 = ''
self.num_3 = ''
else:
lcd.setText(self.num_1 + 'n' + self.flag_flag + 'n' + self.num_2 + 'n=n' + str(float(self.num_3)))
self.flag = 0
self.num_1 = '0'
self.num_2 = ''
self.num_3 = ''
else:
pass
#----------------------------------------------------------------------
def main():
""""""
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
