from PyQt5.Qt import * import sys class App(QApplication): def notify(self,receiver,evt): #过滤接收者和事件类型 if receiver.inherits("QPushButton") and evt.type()==QEvent.MouseButtonPress: print(receiver,evt) return super().notify(receiver,evt) class Btn(QPushButton): def event(self,evt): #根据evt事件类型分发给receiver具体的事件函数 if evt.type() == QEvent.MouseButtonPress: print(evt) #调用父类事件方法进行事件信号分发,才会显示窗口 return super().event(evt) #此处重写了receiver具体的事件函数,若不重写此方法,event会分发到父类QPushButton的具体函数发射信号 def mousePressEvent(self,*args,**kwargs): print("鼠标被按下了") return super().mousePressEvent(*args,**kwargs) app = App(sys.argv) window=QWidget() btn=Btn(window) btn.setText("按钮") btn.move(100,100) def cao(): print("按钮被点击了") btn.pressed.connect(cao) window.show() sys.exit(app.exec_())
PYQT5事件派发
最新推荐文章于 2024-10-17 08:00:29 发布