PyQt5-如何操作鼠标事件

2025-10-17 13:56:13

1、当鼠标在控件内执行特定动作时,系统会发出信息,这个消息可以用特定的函数监听到。通过重写监听的函数做出一些想要的功能。

首先,导入需要的模块;创建应用程序对象;

from PyQt5.Qt import *


import sys
app = QApplication(sys.argv)
sys.exit(app.exec_())

PyQt5-如何操作鼠标事件

2、自定义一个类继承QWidget类;

实例化一个顶层窗口。

PyQt5-如何操作鼠标事件

1、enterEvent(self,QEvent)函数,当鼠标进入控件时触发此函数。


鼠标进入时执行此函数,重写此函数,添加更多功能。

例如:

def enterEvent(self,QEvent):


   print('鼠标进入控件')
   self.setStyleSheet('background-color:skyblue')

PyQt5-如何操作鼠标事件

2、leaveEvent(QEvent)鼠标离开时触发。

鼠标离开控件时执行此函数,重写此函数添加更多功能。

例如:

def leaveEvent(self,QEvent):


   print('鼠标离开控件')
   self.setStyleSheet('background-color:red')

PyQt5-如何操作鼠标事件

1、mousePressEvent(QMouseEvent)鼠标按下执行此函数;

例如添加一个标签:

def setup_ui(self):


   lab=QLabel(self)
   lab.setStyleSheet('font:20px')

鼠标点击时标签显示点击位置:

def mousePressEvent(self,evt):


   #evt=QMouseEvent
   lab=self.findChild(QLabel)
   lab.setText(f'按下鼠标位置:{evt.globalX()},{evt.globalY()}')
   lab.adjustSize()

PyQt5-如何操作鼠标事件

2、mouseReleaseEvent(self,QMouseEvent),鼠标释放时执行此函数;

鼠标释放时执行此函数,重写此函数添加更多功能。

def mouseReleaseEvent(self,evt):


   lab2 = self.findChild(QLabel,'2')
   lab2.setText(f'松开鼠标位置:{evt.globalX()},{evt.globalY()}')
   lab2.adjustSize()

PyQt5-如何操作鼠标事件

1、mouseDoubleClickEvent(self,QMouseEvent),鼠标双击时执行此函数;

例如:双击标签打开一个网址;

自定义两个类继承自QLabel,并重写mouseDoubleClickEvent()函数,加入打开网址的代码。这样才能使鼠标双击时作用在标签上。

注意:如果在窗口类内直接重写事件函数,是作用在窗口上。

import os

class Lab1(QLabel):


   def mouseDoubleClickEvent(self,QMouseEvent):
       os.system('"本地浏览器程序路径" http://naotu.baidu.com/')
class Lab2(QLabel):
   def mouseDoubleClickEvent(self, QMouseEvent):
       os.system('"本地浏览器程序路径" https://jingyan.baidu.com/')

PyQt5-如何操作鼠标事件

2、实例化标签。此时双击标签就能执行事件函数,打开网址。双击仅作用在标签上。

lab1=Lab1(self);lab1.move(5,5)


lab1.setStyleSheet('background-color:red;font:20px')
lab1.setText('百度脑图')


lab2 = Lab2(self);lab2.move(5, 30)
lab2.setStyleSheet('background-color:red;font:20px')
lab2.setText('百度经验')

PyQt5-如何操作鼠标事件

1、mouseMoveEvent(QMouseEvent),鼠标按下时移动时执行此函数。

列如:按下鼠标移动时在窗口子控件标签显示鼠标移动位置。

def setup_ui(self):


   lab=QLabel(self);lab.move(5,5)
   lab.setStyleSheet('background-color:red;font:20px')
def mouseMoveEvent(self,evt):
   #evt=QMouseEvent
   pos=(evt.pos().x(),evt.pos().y())
   lab=self.findChild(QLabel)
   lab.setText(f'鼠标位置:{pos}')
   lab.adjustSize()

PyQt5-如何操作鼠标事件

2、setMouseTracking(True),设置鼠标追踪为True,没有按下也能执行mouseMoveEvent函数。

PyQt5-如何操作鼠标事件

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢