PyQt5学习6-第一个应用-简单计算器

结合QPushButton,QLineEdit,QGridLayout能够编写一个简单的计算器软件,可以满足日常基本需求。

calculator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/python3
#-*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QWidget,QPushButton,QLineEdit,QApplication,QGridLayout
class ex(QWidget):
def __init__(self):
super(ex, self).__init__()
self.initUI()
def initUI(self):
self.expression = ''
grid = QGridLayout()
self.setLayout(grid)
self.display = QLineEdit('0')
self.display.setReadOnly(True)
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','.','=','+']
positions = [(i+1,j) for i in range(5) for j in range(4)]
for pos, name in zip(positions, names):
if name == '':
continue
button = QPushButton(name)
button.clicked.connect(self.buttonClicked)
grid.addWidget(button, *pos)
self.setWindowTitle('Calcular')
self.show()
def buttonClicked(self):
text = self.sender().text()
if text in '+-*/':
self.expression = self.expression + text
elif text == '=':
self.expression = str(eval(self.expression))
elif text == 'Back':
self.expression = self.expression[0:len(self.expression)-1]
elif text == 'Clear':
self.expression = '0'
elif text == 'Close':
self.close()
else:
self.expression = text if self.expression == '0' else self.expression+text
self.display.setText(self.expression)
if __name__ == '__main__':
app = QApplication(sys.argv)
e = ex()
sys.exit(app.exec_())

结果

calculator