2021. 6. 28. 08:33ㆍGUI Programming/PyQT5 (GUI Programming)
[우선 따라해보는 Python]
https://github.com/Mr-DooSun/pyqt5-gui/blob/master/ex3_button/ex1_button_clicker.py
이번에는 pyqt5에 있는 button 을 사용해보도록 하겠습니다.
그리고 Label을 활용해 버튼을 클릭할시 text에 번호가 올라가는 형식으로 구현해보겠습니다
만약 Label에 대해 부족한점이 있으면 아래링크를 참고해주십시오
https://mr-doosun.tistory.com/10
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