728x90
반응형
https://gist.github.com/saleph/a301957b16dff7ad2892
전 포스팅인 PT Designer를 이용하여 계산기를 만들면서 구글링을 통해 위 사이트를 알게 되었다.
사이트에 있는 코드는 grid 계산기의 layout만 있었다. 이 코드를 이용하여 계산기의 기능을 구현하고자 한다.
def init_ui(self): 까지는 사이트에 있던 코드의 내용이고
def func_a는 내가 계산기의 기능을 추가한 것이다!
import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout, QPushButton, QApplication, QPlainTextEdit, QLabel)
class Example(QWidget):
def __init__(self):
super().__init__()
self.str =''
self.label =QLabel();
self.init_ui()
def init_ui(self):
grid = QGridLayout()
self.setLayout(grid)
names = ['Cls', 'Bck', '', 'Close',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+']
positions = [(i,j) for i in range(5) for j in range(4)]
for position, name in zip(positions, names):
if name == '' : continue
btn = QPushButton(name)
btn.clicked.connect(self.func_a)
grid.addWidget(btn, *position)
grid.addWidget(self.label)
self.move(300,150)
self.setWindowTitle('Calculator')
self.show()
self.str=""
def func_a(self,x) -> None:
sender = self.sender() # 어떤 콤포넌트 또는 위젯에서 어떤 signal이 발생했는가?
self.str = self.str + sender.text()
self.label.setText(self.str)
result=[]
first_operand = 0
if 'C' in self.str: #비우기
self.label.clear()
self.str = '' #문자열 내용 비우기
for i in list(self.str):
result_str = ''.join(result)
if i == '=': # =일 경우 계산 결과를 label에 적용
print("결과는 =",i, 'result :', result)
print('결과는 ',result_str)
print('비어있나', first_operand)
print('계산 결과는', int(result_str)+first_operand)
if '+' in self.str:
self.label.setText(str(int(result_str) + first_operand))
if '-' in self.str:
self.label.setText(str(first_operand - int(result_str)))
if '*' in self.str:
self.label.setText(str(first_operand * int(result_str)))
if '/' in self.str:
self.label.setText(str(first_operand / int(result_str)))
elif i in ['+','-','*','/']:
first_operand += int(result_str)
print('덧셈 누르면',result_str)
print(i)
result=[]
else:
result.append(i)
print(i, '결과 : ',result)
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
728x90
반응형
'FRONT-END > PyQT' 카테고리의 다른 글
[PyQT] 계산기 만들기 / Qt Designer를 기반으로 (0) | 2021.06.03 |
---|---|
[PyQT] 툴바 만들기 / 가변인자 예제 (0) | 2021.06.03 |
[PyQT] 버튼을 눌러 함수 호출하여 QMessageBox 띄우기 (0) | 2021.06.03 |
[PyQT] Pycharm(파이참)에서 pyqt5 사용하기 (0) | 2021.06.03 |
[PyQT] QPalette 클래스 를 이용한 예제 (0) | 2021.06.03 |