Post List

2015년 9월 13일 일요일

Python GUI Programming : PyQt #03 사용자 정의 signal/slot 추가 및 python code에서 기능 구현

앞서 작성하던 ui 파일에서 계속 진행하겠습니다.
화면 상단 메뉴 중에 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를 작성하도록 하겠습니다.


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())
view raw HelloQtUi2.py hosted with ❤ by GitHub


앞서 본 예제에서 slot 1 ~ 3 에 대한 구현을 추가한 것입니다. 나머지는 동일 합니다.

해당 python file을 실행하여 각 button을 눌렀을 때 상단의 labal의 내용이 바뀌는 것을 확인하였으면 성공적으로 적용된 것입니다.

댓글 없음:

댓글 쓰기