PyQT 사용자 정의 이벤트 pyqtSignal 예제 > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

python | PyQT 사용자 정의 이벤트 pyqtSignal 예제

본문

1. 일반적인 예

 

[code]

from PyQt5.QtCore import OObject


class MyObject(OObject):

    sig = pyqtSignal(str)

    

    def __init__(self):

        super().__init__()

        

    def execute(self):

        self.sig.emit('이벤트가 발생했습니다')

        



class Main:

    

    def execute(self):

        obj = MyObject()

        obj.sig.connect(self.handler)

        obj.execute()

        

    @pyqtSlot(str)  #이걸 해줘야 한다는데 해주면 에러가 난다.  이유는 아직 모르겠다.

    def handler(self, value):

        print(value)

[/code]

 

2. 상속하지 않고 포함해서 쓰는게 나을 거 같다.  전용 클래스를 하나 만들어 사용한다.

 

event.py

[code]

from PyQt5.QtCore import QObject, pyqtSignal


class Event(QObject):


    __sig = pyqtSignal(str)


    def __init__(self):

        super().__init__()


    def connect(self, reference):

        self.__sig.connect(reference)


    def emit(self, value):

        self.__sig.emit(value)

[/code]

 

example.py

[code]

from event import Event

class Example:

    def __init__(self):

        self.event = Event()

 

    def connect(self, handler):

        self.event.connect(handler)

 

    def execute(self):

        self.event.emit('이벤트가 발생되었습니다.')

[/code] 

 

main.py

[code]

from example import Example

 

class MyWindow(QMainWindow):

    def __init__(self):

        super().__init__()

        self.example = Example()

        self.example.connect(handler)

 

    def handler(self, value):

        print(value)

[/code]

댓글 0개

등록된 댓글이 없습니다.

Menu