【python zip】Python PyQt5实现的简易计算器功能示例

时间:2021-08-12  来源:python  阅读:

这里剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它

【知识点】

1、利用循环添加按钮部件,及给每个按钮设置信号/槽
2、给按钮设置固定大小:button.setFixedSize(QtCore.QSize(60,30))
3、取事件的的发送者(此例为各个按钮)的文本:self.sender().text()

【效果图】

【源代码】

importsys
fromPyQt5importQtWidgets,QtCore,QtGui
classExample(QtWidgets.QWidget):
 def__init__(self):
  super(Example,self).__init__()
  self.initUI()
  self.reset()
 definitUI(self):
  self.setWindowTitle("简易计算器")
  grid=QtWidgets.QGridLayout()
  self.display=QtWidgets.QLineEdit("0")
  self.display.setFont(QtGui.QFont("Times",20))
  self.display.setReadOnly(True)
  self.display.setAlignment(QtCore.Qt.AlignRight)
  self.display.setMaxLength(15)
  grid.addWidget(self.display,0,0,1,4)
  names=["Clear","Back", "", "Close",
    "7","8","9","/",
    "4","5","6","*",
    "1","2","3","-",
    "0",".","=","+"]
  pos=[(0,0), (0,1), (0,2), (0,3),
    (1,0), (1,1), (1,2), (1,3),
    (2,0), (2,1), (2,2), (2,3),
    (3,0), (3,1), (3,2), (3,3),
    (4,0), (4,1), (4,2), (4,3)]
  c=0
  fornameinnames:
   button=QtWidgets.QPushButton(name)
   button.setFixedSize(QtCore.QSize(60,30))
   button.clicked.connect(self.buttonClicked)# 给每个按钮设置信号/槽
   ifc==2:
    pass
    #grid.addWidget(QtWidgets.QLabel(""), 0, 2) #替换 第三个按钮 为 文本标签!
   else:
    grid.addWidget(button, pos[c][0]+1, pos[c][1])
   c=c+1
  self.setLayout(grid)
 defbuttonClicked(self):
  #sender = self.sender(); # 确定信号发送者
  #self.display.setText(sender.text())
  text=self.sender().text()
  iftextin"+-*/":
   self.history.append(self.number)# 数字入栈
   self.history.append(text)# 运算符入栈
   self.operator=text# 设置当前运算符
   self.number=""# 数字清空
   self.numberType="int"
   return
  eliftext=="=":
   self.calculate()# 计算
  eliftext=="Back":
   pass
  eliftext=="Clear":
   self.reset()
  eliftext=="Close":
   self.close()
  eliftext==".":
   ifself.numberType=="int":
    self.number+=text
    self.numberType="float"
  else:
   self.number=self.number+textifself.number !="0"elsetext
  self.display.setText(self.number)
 defcalculate(self):
  pass
 defreset(self):
  self.number="0"
  self.result=0
  self.history=[]
  self.operator=""# +,-,*,/
  self.numberType="int"# int与float两种,如果输入了小数点则为实数
app=QtWidgets.QApplication(sys.argv)
ex=Example()
ex.show()
sys.exit(app.exec_())

【python zip】Python PyQt5实现的简易计算器功能示例

http://m.bbyears.com/jiaocheng/135457.html

推荐访问:python基础教程 python3
相关阅读 猜你喜欢
本类排行 本类最新