화면 상단 메뉴 중에 Edit Signal / Slot 버튼을 누르면 현재 화면의 control 들 간의 signal / slot 연결 관계 확인이 가능합니다.

1st button 에서 마우스를 click한 상태로 drag 한 후 dialog 상 아무곳에서나 마우스를 놓습니다.

연결 설정 창이 뜨는데, Dialog (QDialog) 쪽에서 편집을 누릅니다.

아래의 + 표시를 눌러서 사용자 정의 slot 1 ~ 3 을 추가합니다. 별도로 이름은 변경해주지 않아도 됩니다.

그런 다음 clicked() Signal 과 slot1() Slot을 연결해줍니다.

같은 방법으로 2nd Button 과 slot2(), 3rd Button 과 slot3()을 각각 연결해줍니다.

사용자가 정의하 Slot()은 직접 구현해 줘야 합니다.
Python Code로 구현하도록 하겠습니다.
먼저 HelloPyQt.ui 파일을 저장 한 후 해당 파일과 동일한 위치에 Python Code를 작성하도록 하겠습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
from PyQt5 import QtWidgets | |
from PyQt5 import uic | |
from PyQt5 import QtGui | |
from PyQt5 import QtCore | |
from PyQt5.QtCore import pyqtSlot | |
class HelloQtForm(QtWidgets.QDialog): | |
def __init__(self, parent=None): | |
QtWidgets.QDialog.__init__(self, parent) | |
self.ui = uic.loadUi("HelloPyQt.ui", self) | |
self.ui.show() | |
@pyqtSlot() | |
def slot1(self): | |
self.ui.label_out.setText("1st Button") | |
@pyqtSlot() | |
def slot2(self): | |
self.ui.label_out.setText("2nd Button") | |
@pyqtSlot() | |
def slot3(self): | |
self.ui.label_out.setText("3rd Button") | |
if __name__ == '__main__': | |
app = QtWidgets.QApplication(sys.argv) | |
W = HelloQtForm() | |
sys.exit(app.exec()) |
앞서 본 예제에서 slot 1 ~ 3 에 대한 구현을 추가한 것입니다. 나머지는 동일 합니다.
해당 python file을 실행하여 각 button을 눌렀을 때 상단의 labal의 내용이 바뀌는 것을 확인하였으면 성공적으로 적용된 것입니다.
댓글 없음:
댓글 쓰기