1 给窗口加过滤器

  1. def init_wnd(self):
  2. self.installEventFilter(self) # 1 安装事件过滤器
  3. # 2 重写事件过滤器, 所有的事件都会走这里经过
  4. def eventFilter(self, obj: QObject, event: QEvent) -> bool:
  5. print(obj, event)
  6. if obj is self:
  7. if event.type() == QEvent.MouseButtonPress:
  8. print("鼠标按下")
  9. elif event.type() == QEvent.MouseButtonRelease:
  10. print("鼠标释放")
  11. elif event.type() == QEvent.MouseMove:
  12. print("鼠标移动")
  13. return super(WndClientLogin, self).eventFilter(obj, event)

2 给控件加过滤器

  1. def __init__(self):
  2. self.lbe_captcha_pic.installEventFilter(self) # 给验证码标签安装事件过滤器
  3. def eventFilter(self, obj: QObject, ev: QEvent):
  4. if obj is self.lbe_captcha_pic:
  5. ev_type = ev.type()
  6. if ev_type == QEvent.MouseButtonPress or ev_type == QEvent.KeyPress:
  7. self.popup_captcha_wnd()
  8. self.show_info("验证码已刷新")
  9. return super().eventFilter(obj, ev)