python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析_python_脚本之家 (jb51.net)

一、可预见事件

事件很多,窗口、鼠标、键盘、时间等的些许改变,都足可以构成一个事件。有些事件是可预料的如按钮按下、鼠标移动等,可以预先建立程序入口。所有的QWidget都存在可预见事件。如下:

  • 键盘事件:按键的按下与松开
  • 鼠标事件:鼠标指针的移动,鼠标按键的按下与松开
  • 拖放事件:用鼠标进行拖放
  • 滚轮事件:鼠标滚轮滚动
  • 绘屏事件:重绘制屏幕的某些部分
  • 定时事件:定时器到时
  • 焦点事件:键盘焦点移动
  • 进入和离开事件:鼠标指针移入Widget内,或者移出
  • 移动事件:Widget的位置改变
  • 大小改变事件:widget的大小改变
  • 显示和隐藏事件:widget显示与隐藏
  • 窗口事件:窗口是否为当前窗口

如:mousePressEvent(),keyPressEvent(),paintEvent()

二、概括性事件--QObject.event

概括性事件,是指凡是有事件触发,这个事件必然被触发,而且是最早触发。这个道理是,事件触发首先是操作系统的某个中断被触发,究竟是哪一个中断事件,需要进一步判别。这个概括性事件就是QObject.event()接口。

因此,有些事件可以超载对应事件虚函数实现。当然,也可以超载QObject的Event得以实现。

三、鼠标追踪

本代码首先解决一个小问题,如何追踪鼠标的位置?本篇介绍可预见事件超载实现。

3.1 基本代码

1)导入函数包

import sys
from PyQt5.QtCore import (QEvent, QTimer, Qt)
from PyQt5.QtWidgets import (QApplication, QMenu, QWidget)
from PyQt5.QtGui import QPainter

2)定义一个窗口

class Widget(QWidget):def __init__(self, parent=None):super(Widget, self).__init__(parent)self.resize(1200, 800)self.move(100, 100)#设置标题self.setWindowTitle("Events")

3)运行所定义窗口

if __name__ == "__main__":app = QApplication(sys.argv)form = Widget()form.show()app.exec_()

3.2 追加鼠标位置追综功能

在以上的widget追加一个函数:

def mouseMoveEvent(self, event):#如果没有鼠标双击,执行globalPos = self.mapToGlobal(event.pos())x = globalPos.x()y = globalPos.y()print(x,y)

以上程序在鼠标按下后移动,可以捕获移动位置,但鼠标不按不可以跟踪,如何改,才能不按下鼠标也能追踪?

答案:在

class Widget(QWidget):
  def __init__(self, parent=None):

上追加:

self.setMouseTracking(True)

就可以了。

QT界面操作1:如何跟踪鼠标位置?相关推荐

  1. 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置

    USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...

  2. QT5界面操作2:如何用状态栏显示鼠标坐标

    在文  QT界面操作1:如何跟踪鼠标位置?实现了鼠标位置捕获,这里用两种方式显示鼠标坐标 1)状态栏显示 2)窗口刷新显示 先看如何获取鼠标位置的代码. import sys from PyQt5.Q ...

  3. QT中鼠标位置获取问题之event-globalPos()与pos()函数

    QT中鼠标位置获取问题之event->globalPos()与pos()函数 标签: Qt 2015-01-03 19:41 820人阅读 评论(0) 收藏 举报 分类: Qt 版权声明:本文为 ...

  4. QT界面:重写鼠标事件/实时显示Label中鼠标位置

    为了在QT UI界面的状态栏实时显示鼠标在Label中的位置,需要重写鼠标事件MouseMoveEvent(). 但是MouseMoveEvent为了不过多消耗资源,默认需要鼠标按下捕捉到.因此需要在 ...

  5. 【KRKR进阶实用教程】1、捕获鼠标位置——存档界面制作

    ■注意事项■ ※如果你刚接触krkr,那么阅读前强烈推荐先阅读水螅姐的教程把KAG等基本知识学明白:猛击这里 ※本文建立在读者已经读过一遍krkr自带tjs文档的前提下而撰写,所以不对其中出现的一些在 ...

  6. Qt界面优化:鼠标双击特效

    Qt界面优化:鼠标双击特效 文章目录 Qt界面优化:鼠标双击特效 一.双击特效 二.使用步骤 1. .h部分 2. .cpp部分 注意点 gif动图的背景必须是透明的!!! 总结 一.双击特效 二.使 ...

  7. QT编写实现图片的幻灯片播放、自适应显示、缩放(以鼠标位置为中心进行缩放)、拖动、重置、显示鼠标位置像素坐标及RGB值、播放GIF动画、截图保存、批量保存、拖入文件夹遍历所有文件

    这个图片查看器功能很多,是我花了不少心思,不断优化,不断添加功能的成果: 1.能打开并显示所有常用图片格式文件,显示鼠标位置像素坐标及RGB值 2.能缩放,拖动图片,可以以鼠标为中心滚动滚轮进行缩放 ...

  8. qt 取textedit 鼠标位置处单词_开源国产优麒麟20.04 V3发布:多达73处改进

    4月24日,优麒麟20.04 LTS正式发布,提供5年长期技术支持,默认搭载最新的Linux 5.4系统内核.全新的UKUI 3.0桌面环境预览版,同时支持x86.ARM64 CPU体系结构. 今天, ...

  9. python鼠标位置_用python3 返回鼠标位置的实现方法(带界面)

    点击获取后,返回2s后的鼠标位置,显示在文本框 (需要用pip命令安装所需的的库) (pip install 模块名 比如 安装pyautogui 模块 在cmd里面输入: pip install p ...

最新文章

  1. 单片机一个月能入门么?单片机工程师能干到多少岁?
  2. 模组使用之dB、dBm、dBw、dBu、dBc的含义和之间的关系
  3. 工作方法及总结(给自己的忠告)
  4. Qt对象类型转换(char* int与Qstring间的转换)
  5. 解决No version of NDK matched the requested version问题
  6. The proctime attribute ‘rowtime‘ must not replace an existing field.
  7. iOS NSTextAttachment - 图文混排
  8. asp.net 发送邮件函数两则
  9. 如果把钱存入余额宝时,所有人都在受益,那么谁在亏损呢?
  10. 使用高德地图打车软件实现_强化学习:使用Q学习来打车!
  11. Pandas统计分析中(数据计算、数据格式化、数据分组统计、数据移位、数据转换、数据合并、数据导出)
  12. STM32 USB主机通信连接中断过程
  13. Debian 10截图小工具 flameshot
  14. java程序员生日祝福语_给程序员的一句话祝福语
  15. 程序化广告实战分享系列 - 程序化广告的前世今生及趋势(入门)
  16. 9820E ClassicHome分析总结
  17. 基于PHP+MySQL的高校实验室预约管理系统
  18. 史上最全 人工智能AI、黑客电影、网络安全题材电影最全合集
  19. 现在的你迷茫吗?是否还在做毕业后的高薪梦?你相信彩虹海吗?
  20. 机器学习入门基础(二)

热门文章

  1. 文巾解题35. 搜索插入位置
  2. Tableau实战系列Tableau基础概念全解析 (二)-万字长文解析数据类型及数据集
  3. 次元网站女装穿起来,从A站到Z站,你知道哪个?谁才是你的最爱?
  4. 听说你想去大厂看妹子,带你看看字节跳动技术中台后端面试长啥样?
  5. 数据挖掘学习笔记之人工神经网络(二)
  6. Hive安装问题简述
  7. R语言-RStudio打开中文注释的脚本后出现乱码
  8. elasticSearch6源码分析(2)模块化管理
  9. 大众点评订单分库分表实践之路
  10. 【沟通交流】弱关系向强关系的转变