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]