[PyQT5] Button clicked 사용해보기 [4]

2021. 6. 28. 08:33GUI Programming/PyQT5 (GUI Programming)

반응형

[우선 따라해보는 Python]

 

https://github.com/Mr-DooSun/pyqt5-gui/blob/master/ex3_button/ex1_button_clicker.py

 

Mr-DooSun/pyqt5-gui

Contribute to Mr-DooSun/pyqt5-gui development by creating an account on GitHub.

github.com

이번에는 pyqt5에 있는 button 을 사용해보도록 하겠습니다.

그리고 Label을 활용해 버튼을 클릭할시 text에 번호가 올라가는 형식으로 구현해보겠습니다

 

만약 Label에 대해 부족한점이 있으면 아래링크를 참고해주십시오

https://mr-doosun.tistory.com/10

 

[Python] Label 생성 / 텍스트 출력 / 편집 하기 ( 폰트, 글자색, 크기 ) [Pyqt5 - 2]

[우선 따라해보는 Python] https://github.com/Mr-DooSun/pyqt5-gui/blob/master/ex2_label/ex2_Label.py Mr-DooSun/pyqt5-gui Contribute to Mr-DooSun/pyqt5-gui development by creating an account on GitHub...

mr-doosun.tistory.com

 

button을 생성하는 방법은 두가지 방법으로 설명해드리겠습니다

 

[ 첫번째 방법 ]

우선 designer를 통해 button을 추가해줍니다

추가로 라벨을 활용해보도록하겠습니다 ( Label도 추가해줍니다 )

아래 그림처럼 추가해준뒤 .ui파일을 .py파일로 바꿔줍니다

그럼 아래와 같은 소스가 추가됩니다

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        #label
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(40, 30, 56, 12))
        self.label.setObjectName("label")

        #pushbutton
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(30, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")

        MainWindow.setCentralWidget(self.centralwidget)

        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "TextLabel"))
        self.pushButton.setText(_translate("MainWindow", "PushButton")) #button name change

[ 두번째 방법 ]

mainWindow 소스에 setupUI에 아래 소스를 추가해주시면됩니다.

#label
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(40, 30, 56, 12))
self.label.setObjectName("label")

#pushbutton
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(30, 60, 75, 23))
self.pushButton.setObjectName("pushButton")

위와 같은 방법들을 이용하면 아래와 같은 화면이 출력됩니다

이제 버튼을 클릭하면 label에 숫자가 1씩 오르도록 설정해보겠습니다.

 

우선 Ui_MainWindow() 클래스 안 전역변수 a를 선언합니다.

버튼을 클릭하였을때 실행할 함수를 만들어줍니다

a = 0
def hello(self, MainWindow):
    self.a+=1 #클래스 안에서 선언된 변수는 self를 사용해야 합니다.
    self.label.setText(str(self.a)) # ※int타입은 출력이 안됩니다 string으로 변환해줘야합니다

마지막으로 button변수 아래, 소스를 추가하여 버튼을 클릭하였을때 hello 함수에 연결해줍니다

self.pushButton.clicked.connect(self.hello) #클릭하였을때 함수에 연결해줍니다

그럼 아래와 같이 버튼을 클릭하였을때 숫자가 올라가는걸 볼수있습니다

이상 포스팅을 마치도록 하겠습니다.

 

 

[완성된 코드]

https://github.com/Mr-DooSun/pyqt5-gui/blob/master/ex3_button/ex1_button_clicker.py

 

Mr-DooSun/pyqt5-gui

Contribute to Mr-DooSun/pyqt5-gui development by creating an account on GitHub.

github.com

 

반응형