PyQt5를 이용하여 PushButton과 Label을 만들어 보겠습니다.
PyQt5에서 PushButton은 QPushButton이고, Label은 QLabel로 쓰셔서 기능을 사용하시면 됩니다.
전체 코드는 포스트 맨 아래에 있습니다.
class TestWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
윈도는 지난 포스트와 다르게 'class'를 사용해서 만들겁니다.
'setupUI'라는 함수를 사용해서 윈도우를 세팅할 예정이고, 'super().__init__()'은 상속받는 class에서 시작하게 하는 명령어라고 생각하심 됩니다.
def setupUI(self):
self.setWindowTitle('ButtonLabelWindow')
self.setGeometry(100,100,300,100)
setupUI 함수에서 윈도우 타이틀도'ButtonLabelWindow' 라고 만들고, 크기와 위치도 지정합니다.
self.label = QLabel("Message:", self)
self.label.move(20,20)
self.label.resize(200,20)
레이블은 "Message:"라고 쓰여진 옆에 먼가가 쓰여질 수 있도록 설정하고, 위치, 크기를 설정합니다.
btnSave = QPushButton('저장',self)
btnSave.move(20,50)
btnSave.clicked.connect(self.btnSave_clicked)
btnCancel = QPushButton('취소',self)
btnCancel.move(120,50)
btnCancel.clicked.connect(self.btnCancel_clicked)
Label이나 LineEdit은 앞에 'self.'를 붙이는데 버튼은 안 붙이네요. 저는 레이블과 라인에딧은 윈도우에 붙어 있고, 버튼은 따로라 그렇다고 무작정 외웠습니다.
버튼은 저장하는 버튼과 취소 버튼을 누르고 각 함수에 연결합니다.
def btnSave_clicked(self):
self.label.setText('저장 되었습니다.')
def btnCancel_clicked(self):
self.label.setText('취소 되었습니다.')
각 버튼에 연결하는 함수입니다. 저장을 누르면 '저장 되었습니다.', 취소를 누르면 '취소 되었습니다.'가 레이블에 표시됩니다.
if __name__ == '__main__':
app = QApplication(sys.argv)
window = TestWindow()
window.show()
app.exec_()
마지막에 이게 제일 중요하죠. 다른 모듈이 아니라 현재 창에서 실행되면 아래를 실행해라는 함수죠.
현재 코딩된 파이썬 파일의 위치(sys.argv)를 인자로 QApplication으로 app을 생성하고, 맨 위에서 만든 'TestWindow()' 클래스를 window로 생성합니다.
그리고 window.show() 윈도우를 보여주는 거죠. app.exec_() 무한 루프처럼 계속 실행하라는 얘기죠.
실행 결과는 아래와 같습니다.
실행하면 위의 그림과 같은 창이 뜹니다.
저장을 누르면, '저장 되었습니다'라고 레이블이 나타나고
취소를 누르면 취소 되었다고 하네요.
class TestWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setWindowTitle('ButtonLabelWindow')
self.setGeometry(100,100,300,100)
self.label = QLabel("Message:", self)
self.label.move(20,20)
self.label.resize(200,20)
btnSave = QPushButton('저장',self)
btnSave.move(20,50)
btnSave.clicked.connect(self.btnSave_clicked)
btnCancel = QPushButton('취소',self)
btnCancel.move(120,50)
btnCancel.clicked.connect(self.btnCancel_clicked)
def btnSave_clicked(self):
self.label.setText('저장 되었습니다.')
def btnCancel_clicked(self):
self.label.setText('취소 되었습니다.')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = TestWindow()
window.show()
app.exec_()
모듈을 가져오는 것은 생략이 되어 버렸네요.
아래와 같이 시스템 모듈과 PyQt5.QtWidgets 에서 모든걸 Import 하심 됩니다.
import sys
from PyQt5.QtWidgets import *
'파이썬(Python) > 파이썬 GUI(PyQt5 & tkinter)' 카테고리의 다른 글
PyQt5 - Radio Button(라디오 버튼) 만들기 (0) | 2020.12.07 |
---|---|
PyQt5 - QLineEdit 사용하기 (0) | 2020.12.06 |
PyQt5 - 윈도우화면에 QPushButton 추가하기 (0) | 2020.12.04 |
PyQt5- QMainWindow 클래스를 이용한 간단한 윈도우 만들기 (2) | 2020.11.21 |
PyQt5 - QPushButton 위젯을 이용하여 간단한 창 만들기 (0) | 2020.11.20 |
댓글