重定义鼠标响应+键盘响应事件

一,每个事件都被封装成相应的类:

pyqt中,每个事件类型都被封装成相应的事件类,如鼠标事件为QMouseEvent,键盘事件为QKeyEvent等。而它们的基类是QEvent。

二,基类QEvent的几个重要方法:

accept() 表示事件已处理,不需要向父窗口传播

ignore()表示事件未处理,继续向父窗口传播f

type()返回事件类型,如QtCore.QEvent.MouseButtonPress,一般由基事件调用。因为其它事件已经知道自己的事件类型了。

还有一个自定义事件的注册方法。

三,QMouseEvent鼠标事件:

buttons()  返回哪个鼠标按键被按住了。如Qt.LeftButton

globalPos()  返回鼠标相对屏幕的位置QPoint

pos()  返回鼠标相对处理事件的窗口的位置

四、处理鼠标事件的响应函数(在QWidget及其继承类中):

mousePressEvent(QMouseEvent)  #鼠标点击触发事件  

mouseReleaseEvent(event)  #鼠标释放触发事件

mouseMoveEvent(event)  #鼠标移动触发事件

# 事件。
"""重写鼠标事件,实现窗口拖动。"""
def mousePressEvent(self, event):
if event.buttons() == Qt.LeftButton:
self.setCursor(Qt.OpenHandCursor)
self.parent.m_drag = True
self.parent.m_DragPosition = event.globalPos()-self.parent.pos()
event.accept() def mouseMoveEvent(self, event):
try:
if event.buttons() and Qt.LeftButton:
self.parent.move(event.globalPos()-self.parent.m_DragPosition)#move将窗口移动到指定位置
event.accept()
except AttributeError:
pass def mouseReleaseEvent(self, event): if event.button()==Qt.LeftButton:
self.m_drag = False
self.unsetCursor()

效果如下:

重新定义鼠标事件:

"""重定义鼠标单击事件"""
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.lab1.setText("鼠标左键点击!")
# print(event.pos().x(),event.pos().y())
if event.button() == Qt.RightButton:
self.lab1.setText("鼠标右键点击!") """当鼠标左键点击拖动时触发事件,有无if判断条件效果都一样"""
def mouseMoveEvent(self, event):
# if event.buttons() == Qt.LeftButton:
# # print(type(event.pos().x())) #<class 'int'>
# self.lab2.setText(str(event.pos().x())+","+str(event.pos().y()))
self.pos = event.pos()
print(self.pos)
self.lab2.setText(str(event.pos().x()) + "," + str(event.pos().y()))
self.update()

完整代码:

 from PyQt5.QtCore import Qt
from PyQt5.QtGui import (QPainter, QColor, QPen)
import sys
from PyQt5.QtWidgets import (QApplication,QWidget,QLabel) class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUi()
#默认情况下禁用鼠标跟踪, 如果启用鼠标跟踪,即使没有按钮被按下,小部件也会接收鼠标移动事件。
#当然你也可以不写,只需要在执行的过程中按照鼠标左键也行
self.setMouseTracking(True) def initUi(self):
self.setGeometry(400,300,400,300)
self.setWindowTitle("键盘响应事件")
self.lab1 = QLabel("方向",self)
self.lab1.setGeometry(200,150,100,100)
self.lab2 = QLabel("显示鼠标坐标", self)
self.lab2.setGeometry(200, 80, 100, 100) """重定义键盘事件"""
def keyPressEvent(self,e ):
if e.key() == Qt.Key_Up:
self.lab1.setText("↑")
elif e.key() == Qt.Key_Down:
self.lab1.setText("↓")
elif e.key() == Qt.Key_Left:
self.lab1.setText("←")
else:
self.lab1.setText("→") """重定义鼠标单击事件"""
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.lab1.setText("鼠标左键点击!")
# print(event.pos().x(),event.pos().y())
if event.button() == Qt.RightButton:
self.lab1.setText("鼠标右键点击!") """当鼠标左键点击拖动时触发事件,有无if判断条件效果都一样"""
def mouseMoveEvent(self, event):
# if event.buttons() == Qt.LeftButton:
# # print(type(event.pos().x())) #<class 'int'>
# self.lab2.setText(str(event.pos().x())+","+str(event.pos().y()))
self.pos = event.pos()
print(self.pos)
self.lab2.setText(str(event.pos().x()) + "," + str(event.pos().y()))
self.update() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

重定义鼠标响应+键盘响应

所有的QT键盘事件代码如下:

https://pan.baidu.com/s/1Brry6fkUcxaP-uOdukD8Ng

【PyQt5-Qt Designer】鼠标+键盘事件的更多相关文章

  1. QT 11 鼠标键盘事件添加

    鼠标事件 void mousePressEvent(QMouseEvent *event); //单击 void mouseReleaseEvent(QMouseEvent *event); //释放 ...

  2. 【转】Qt鼠标键盘事件

    http://blog.csdn.net/lovebird_27/article/details/50351336 Qt 程序需要在main()函数创建一个QCoreApplication对象,然后调 ...

  3. Linux 模拟 鼠标 键盘 事件

    /************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: ...

  4. Python——pyHook监听鼠标键盘事件

    pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...

  5. Python - selenium_WebDriver 鼠标键盘事件

    from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...

  6. Tkinter 鼠标键盘事件(一)

    一: 鼠标事件 <Button-1>                                                                     鼠标左键单击 ...

  7. Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)

    一.写在前面 上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作,建议收藏.转发! 二.元素的状态 在操作元素之前,我们需要了解元素的常见状态. 1.常见元素状态判断,傻傻 ...

  8. Qt中的键盘事件,以及焦点的设置(比较详细)

    Qt键盘事件属于Qt事件系统,所以事件系统中所有规则对按键事件都有效.下面关注点在按键特有的部分: focus 一个拥有焦点(focus)的QWidget才可以接受键盘事件.有输入焦点的窗口是活动窗口 ...

  9. 由chrome剪贴板问题研究到了js模拟鼠标键盘事件

    写在前面 最近公司在搞浏览器兼容的事情,所有浏览器兼容的问题不得不一个人包了.下面来说一下今天遇到的一个问题吧 大家都知道IE下面如果要获得剪贴板里面的信息的话,代码应该如下所示 window.cli ...

随机推荐

  1. SaaS产品成功学

    『精益』和『敏捷』之类的方法论在产品实现方面消除了不少浪费,但面对SaaS产品,这些却并没有像银弹般有效. 国外的『Ramen』团队模仿Maslow的需求层次理论提出了SaaS产品的需求层次理论,可以 ...

  2. Halcon之 Variation Model(转)

    Variation Model的主要原理是将待检测的图像与一张标准图像作比较,找出待检测图像与标准图像(ideal image)的明显差异(也就是不良).标准图像可以采用几张OK品的图像训练(trai ...

  3. Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明

    本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...

  4. (笔记)Linux内核学习(一)之内核介绍

    内核与操作系统: 内核是操作系统的核心部分,包含了系统运行的核心过程,决定系统的性能,操作系统启动内核被装入到RAM中: 操作系统与底层硬件设备交互和为运行应用程序提供执行环境. Linux内核与微内 ...

  5. [Python] 04 - os & sys module

    相当实用的一些API: Ref: https://docs.python.org/3/library/os.html from os import listdir from os.path impor ...

  6. docker学习网站

    https://yeasy.gitbooks.io/docker_practice/content/compose/install.html docker compose scal 的应用举例 htt ...

  7. libgl1-mesa-glx:i386 : 依赖: libglapi-mesa:i386

    libgl1-mesa-glx:i386 : 依赖: libglapi-mesa:i386 1.获取Android源代码 Android官网给出了从网上下载源代码的方法,具体流程如下网址所示:http ...

  8. TSPL学习笔记(2):过程和变量绑定

    变量的引用 语法: variable 返回: variable的值 如果在某个范围内存在对某个标识符的变量绑定,那么当这个标识符以表达式的形式出现的时候被认为是其所绑定变量的值. 在引用一个标识符的时 ...

  9. Android Autosizing TextViews

    https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview  Autosizing TextView ...

  10. C# 如何提取字符串中的数字

    下面讲解如何在字符串当中抓取到数字 方法一.使用正则表达式 1.纯数字提取 string str = "提取123abc提取"; //我们抓取当前字符当中的123 string r ...