PYQT5事件派发

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_())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值