2021.10.03 - [Python/PyQt응용] - [python] PyQt5 응용 /계산기 만들기 - 레이아웃 배치 (1)
이전 포스팅에서 게산기 레이아웃을 배치했다
이제 숫자 0 ~ 9를 클릭하면 해당하는 숫자가 출력되도록 하는 코드를 작성한다
1. LineEdit에 텍스트 추가하는 함수 setText()를 이용하여 버튼 눌렀을 때 해당하는 숫자를 입력하도록 함수를 만든다
ex) btn_1을 눌렀을 때 "1"추가
def button_1(self): 함수에 다음과 같은 코드를 추가한다
def button_1(self):
self.lineEdit.setText("1")
이렇게 하면 "1"이 입력되지만 계속 추가는 안되기 때문에 문자열을 더해서 추가 입력하는 함수를 만든다
def number(self,num):
exist_text = self.lineEdit.text() #lineEdit값을 가져와서 exist_text에 저장
self.lineEdit.setText(exist_text+num) #기존값 + 새로입력된값
number함수는 num변수를 받아 lineEdit에 있는 값에다 num변수를 추가로 입력한다
button_1 함수를 아래와 같이 수정한다
def button_1(self):
self.number("1")
def button_0 ~ button9를 추가한 뒤에 버튼 클릭하면 함수를 실행하는 코드를 init함수에 추가한다
def initUI(self):
self.setupUi(self)
self.btn_1.clicked.connect(self.button_1) # 버튼 클릭시 연결되는 함수
self.btn_2.clicked.connect(self.button_2)
self.btn_3.clicked.connect(self.button_3)
self.btn_4.clicked.connect(self.button_4)
self.btn_5.clicked.connect(self.button_5)
self.btn_6.clicked.connect(self.button_6)
self.btn_7.clicked.connect(self.button_7)
self.btn_8.clicked.connect(self.button_8)
self.btn_9.clicked.connect(self.button_9)
self.btn_0.clicked.connect(self.button_0)
2. delete하는 함수 만들기
이제 del버튼을 누르면 LineEdit에 있는 숫자를 한 개씩 지우는 함수를 작성한다
def del_num(self):
exist_text = self.lineEdit.text() #LinetEdit에 있는 텍슽트 가져오기
self.lineEdit.setText(exist_text[:-1])
exist_text에 있는 인덱스를 0 부터 마지막 인덱스 전까지 들고 와서 LineEdit에 텍스트를 표시하면 된다
3. 전체 코드
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_main = uic.loadUiType("calculator.ui")[0] #ui 파일 불러오기
class MainWindow(QDialog,form_main):
def __init__(self):
super().__init__()
self.initUI(),
self.show()
def initUI(self):
self.setupUi(self)
self.btn_1.clicked.connect(self.button_1) # 버튼 클릭시 연결되는 함수
self.btn_2.clicked.connect(self.button_2)
self.btn_3.clicked.connect(self.button_3)
self.btn_4.clicked.connect(self.button_4)
self.btn_5.clicked.connect(self.button_5)
self.btn_6.clicked.connect(self.button_6)
self.btn_7.clicked.connect(self.button_7)
self.btn_8.clicked.connect(self.button_8)
self.btn_9.clicked.connect(self.button_9)
self.btn_0.clicked.connect(self.button_0)
self.btn_del.clicked.connect(self.del_num)
def button_1(self):
self.number("1")
def button_2(self):
self.number("2")
def button_3(self):
self.number("3")
def button_4(self):
self.number("4")
def button_5(self):
self.number("5")
def button_6(self):
self.number("6")
def button_7(self):
self.number("7")
def button_8(self):
self.number("8")
def button_9(self):
self.number("9")
def button_0(self):
self.number("0")
def number(self,num):
exist_text = self.lineEdit.text() #lineEdit값을 가져와서 exist_text에 저장
self.lineEdit.setText(exist_text+num) #기존값 + 새로입력된값
def del_num(self):
exist_text = self.lineEdit.text()
self.lineEdit.setText(exist_text[:-1])
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
sys.exit(app.exec_())
4. 실행화면
반응형
'Python > PyQt응용' 카테고리의 다른 글
[Python] PyQt 응용/계산기 만들기 - exe 실행 파일, 아이콘 추가하기 (0) | 2022.02.06 |
---|---|
[Python] PyQt 응용/계산기 만들기 - 이미지 넣기, 버튼에 이미지 (0) | 2021.11.10 |
[Python] PyQt 응용/계산기 만들기 - 사칙연산 입력 및 계산 함수 만들기 (0) | 2021.11.04 |
[python] PyQt5 응용 /계산기 만들기 - 레이아웃 배치 (1) (0) | 2021.10.03 |
댓글