## myqt.py
from PyQt5.QtWidgets import QApplication, QWidget
import sys
if __name__ == "__main__" :
app = QApplication(sys.argv)
first_window = QWidget()
first_window.show()
app.exec_()
우리의 첫 프로그램 화면이다. 눈으로 보이게 된 화면이 물론 멋지긴 하지만, 밋밋하다. 빈 도화지만으로 보고 예술작품이라고 할 수는 없으니 말이다. 프로그램이라 하면 자고로 버튼 / 글자 / 그림 등 콘텐츠가 있어야 되지 않겠는가, 이러한 요소를 위젯(Widget)이라고 부른다. 특히 우리는 Pyqt5를 배우고 있으니 용어를 Q-Widget이라고 하자(한국이었으면 K-Widget이었겠네)
QWidget
QWidget은 키보드 / 마우스 / 휠 등의 여러 이벤트를 수신하고 자기 자신이 그래픽 요소를 가지는 User Interface의 기본 요소이다. 우리가 프로그램에서 보는 여러 가지 화면 요소들은 모두 요소다. 심지어 우리의 첫 코드에 QMainWIndow또한 위젯을 상속받았다. 아래는 Widget들중 아주 일부인 QLabel, QPushButton, QSlider이다.
Slot & Signal
위젯은 User Interface요소이다. 그 말은 즉슨 사용자와 상호작용한다는 이야기이다. 사용자의 입력이나 행동 우리가 "Event"라고 부르는 것은 저번 포스팅에서 알아보았다.
2021.08.29 - [Python/파이선과 친해지기] - [Python] - Python과 예쁘게 친해지기-QApplication과 EVENTLOOP
이러한 Event는 Signal로 발송이 되고, 발송된 Siganl은 그 Signal과 형식(파라미터)이 맞는 Slot에 연결할 수 있다. 코드를 통해서 실용적으로 알아보자. 예를 들면 버튼을 누른다는 행위(사용자의 행위)로 프로그램에서 무엇인가를 출력하는 예제는 다음과 같다.
## myqt.py
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QSlider, QHBoxLayout
import sys
class my_window(QWidget) :
def __init__(self) :
super().__init__()
box = QHBoxLayout()
btn = QPushButton("버튼")
btn.clicked.connect(self.print_function) ### btn의 clicked 시그널이 발송된다.
box.addWidget(btn)
self.setLayout(box)
### print_function은 btn clicked시그널 발송 시 동작
def print_function(self) :
print("무야호")
if __name__ == "__main__" :
app = QApplication(sys.argv)
first_window = my_window()
first_window.show()
app.exec_()
위와 같다. 각 시그널은 일정한 데이터를 실어서 발송할 수 있다.(예를 들면 slider의 경우 현재 slider값 등) QWidget별로 사용할 수 있는 시그널 슬롯이 정말 다양하니 앞으로 Widget강의를 통하여 알아보도록 하자
이번 시간을 마지막으로 PyQt5에서 알아야 할 기본적인 개념을 다 알아보았다. 깊게 들어가면 복잡 시려지지만 이 정도의 개념만으로도 충분히 나만의 GUI 프로그램을 만들 수 있다. 다음 시간부터는 WIdget들을 하나하나 알아보도록 하자
'Python > 파이선과 친해지기' 카테고리의 다른 글
[Python] - Python과 예쁘게 친해지기- QLabel (0) | 2021.09.02 |
---|---|
[Python] - Python과 예쁘게 친해지기-QApplication과 EVENTLOOP (0) | 2021.08.29 |
[Python] - Python과 예쁘게 친해지기-PyQt (4) | 2021.08.27 |
[Python] - Python과 매우 친해지기-type annotation (4) | 2021.07.24 |
[Python] - Python과 매우 친해지기-파라미터 args, kwargs (11) | 2021.07.11 |