from PyQt5.QtWidgets import QPushButton, QWidget, QApplication, QHBoxLayout
from PyQt5.QtCore import QObject
class Button(QPushButton):
def __init__(self, callback):
super(Button, self).__init__()
self.setText("Hi")
self.clicked.connect(callback)
class Example(QObject):
def __init__(self):
super(Example, self).__init__()
self.btn = Button(self.callback)
def callback(self):
print("callback")
class Widget(QWidget):
def __init__(self):
super(Widget, self).__init__()
ex_ = Example()
h_box = QHBoxLayout()
h_box.addWidget(ex_.btn)
self.setLayout(h_box)
self.show()
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
wd = Widget()
sys.exit(app.exec_())
이 코드를 작동 시켜서 버튼을 눌렀을 때 왜 callback이 콘솔에 프린트 안 되는 걸까요 ㅜㅠㅜㅠ 뭐가 문제인지 계속 찾아봐도 모르겠어요 ㅜㅠ
connect를 Example 클래스에서 해야지 엉뚱한데서 하고있냐
그리고 callback이 멤버함수기 때문에 connect할때 self.callback으로 해야함
class Button(QToolButton): def __init__(self, text, callback): super().__init__() self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) self.setText(text) self.clicked.connect(callback)
??
이게 예전에 교수님께서 주셨던 코드였는데 여기서는 이게 작동이 잘 되더라고요 ㅜㅠ
이렇게 할 생각이면 callback 함수가 Button 안에 있어야됨 ㅇㅇ
그렇군용..
잠만 기다려보셈 좀 보고
https://ideone.com/9z4gg7
1번이나
2번방식으로 ㄱㄱ
와와 ㅜㅠㅜㅠ 되네요 진짜 감사합니다 이게 왜 안 되지 고민하면서 진짜 검색하고 한다고 4~5시간은 쓴 거 같은디 ㅜㅠ 진짜 고마워요...