본문 바로가기
Python/PyQt응용

[Python] PyQt5 응용/계산기 만들기 - 숫자 입력 함수 만들기

by 고체물리학 2021. 10. 11.

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. 실행화면

https://youtu.be/699tkq0L1vc

 

반응형

댓글