#https://wikidocs.net/35485
import sys
from PyQt5.QtWidgets import (QApplication, QPushButton, QWidget, QGridLayout, QLineEdit, QTextEdit, QVBoxLayout, QHBoxLayout)
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.X = 0
self.te = 0
self.A = 0
def initUI(self):
hbox = QHBoxLayout()
self.y = QTextEdit()
hbox.addWidget(self.y)
self.y.setText('0')
vbox = QVBoxLayout()
self.x = QLineEdit()
vbox.addWidget(self.x)
self.x.setText('0')
grid = QGridLayout()
for i in range(4):
for j in range(3):
if i*3+j >= 10:
break
btn = QPushButton(str(9-(i*3+j)))
btn.setCheckable(False)
btn.clicked.connect(self.onChanged)
btn.toggle()
grid.addWidget(btn, i, j)
btn1 = QPushButton('+')
btn1.setCheckable(False)
btn1.clicked.connect(self.plus)
btn1.toggle()
grid.addWidget(btn1, 3, 1)
btn2 = QPushButton('=')
btn2.setCheckable(False)
btn2.toggle()
btn2.clicked.connect(self.equal)
grid.addWidget(btn2, 3, 2)
btn5 = QPushButton('C')
btn5.setCheckable(False)
btn5.toggle()
btn5.clicked.connect(self.reset)
grid.addWidget(btn5, 4, 0)
vbox.addLayout(grid)
hbox.addLayout(vbox)
self.setLayout(hbox)
self.setWindowTitle('QGridLayout')
self.setGeometry(300, 300, 300, 200)
self.show()
def onChanged(self):
btn = self.sender()
txt = int(self.x.text())
txt *= 10
txt += int(btn.text())
self.x.setText(str(txt))
def plus(self):
self.X = 1
self.number = int(self.x.text())
self.x.setText('0')
def equal(self):
num = int(self.x.text())
if self.X == 1:
self.x.setText(str(self.number + num))
self.te = (str(self.number)+'+'+str(num)+'='+str(self.number + num))
if A == 0:
self.y.setText(self.te)
A += 1
else:
# 원래 y값에서 새로 추가할 te의 값을 더한 것을 y에 넣음
self.number = 0
self.X = 0
def reset(self):
self.x.setText('0')
self.number = 0
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())top of page

실제 작동 상태를 확인하려면 라이브 사이트로 이동하세요.
계산기 2022-07-09
계산기 2022-07-09
댓글 0개
좋아요
댓글(0)
더 이상 게시물에 대한 댓글 기능이 지원되지 않습니다. 자세한 사항은 사이트 소유자에게 문의하세요.
bottom of page


