今天实现一个鼠标点击事件,效果如下图所示。
要实现这个功能,前提要先熟悉以下什么是事件。
1 事件
在PyQt6的GUI编程中,基于QWidget的应用程序都是由事件event驱动的,它的每个动作都会触发事件。例如单击命令按钮,系统就会产生一个鼠标点击事件,在文本框中输入内容就会产生鼠标事件,最小化窗口等会产生相应的事件等。
1.1 系统事件类型
事件 | 描述 |
键盘事件 | 按键按下松开、焦点移动、获取焦点和失去焦点等触发的事件 |
鼠标事件 | 鼠标按下松开、移动点击双击、进入离开等都会触发的事件 |
窗口事件 | Widget的位置改变、大小改变、显示隐藏关闭等事件 |
绘制屏幕图形 | 窗口绘制和重绘动作 |
定时事件 | 定时器到时间触发事件 |
此外还有Socket事件、剪切板事件、字体改变事件、布局改变事件等(很多)
1.2 默认事件处理函数
PyQt6中,事件是一种对象,事件的基类是抽象类QEvent。QEvent有众多子类表示具体的事件,例如QKeyEvent表示键盘事件,QMouseEvent表示鼠标事件。
QEvent类定义了下列接口函数:
- accept():接收此事件,被接收的事件不会再继续上传至上层容器控件。
- ignore():忽略此事件,被忽略的事件会继续上传至上层容器控件。
- type():返回事件的类型。事件类型是枚举,例如QMouseEvent的type枚举值为5。
2.案例实现
2.1 创建event事件文件
创建event事件文件并命名为“事件处理.py”,编写如下代码:
上述代码中包含鼠标的按下、滚动、双击以及释放鼠标的事件,这些事件已经包含在myLabel类里面了,只要我们创建myLabel类,这些方法就可以使用。
2.2 创建面板并实现鼠标事件
代码中的 self.lb = myLabel(self)
2.3 创建main方法,实现可视化
接下来就可以尝试点击鼠标,查看效果了,注意看输出的日志!
下一篇:PyQt6 对话框