PySide2鼠标延迟触发效果
作者:YXN-python 阅读量:17 发布日期:2024-11-05
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel
from PySide2.QtCore import QTimer
from PySide2.QtGui import QMouseEvent
class MyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.initUI()
# 初始化两个定时器
self.enter_timer = QTimer()
self.leave_timer = QTimer()
# 连接定时器的timeout信号到对应的槽函数
self.enter_timer.timeout.connect(self.mouseEntered)
self.leave_timer.timeout.connect(self.mouseLeft)
# 设置鼠标进入和离开的超时时间
self.enter_timer.setSingleShot(True)
self.leave_timer.setSingleShot(True)
self.enter_timer.setInterval(1000) # 1秒
self.leave_timer.setInterval(2000) # 2秒
# 添加一个标签用于显示和隐藏
self.label = QLabel("Mouse is here!", self)
self.label.hide() # 初始时隐藏
# 使用布局管理器来管理小部件的位置
layout = QVBoxLayout()
layout.addWidget(self.label)
self.setLayout(layout)
# 初始化界面
def initUI(self):
self.frame = QWidget(self) # 假设frame是一个QWidget
self.frame.hide() # 初始时隐藏
# 鼠标进入事件
def enterEvent(self, event: QMouseEvent):
self.enter_timer.start()
self.leave_timer.stop()
# 鼠标离开 事件
def leaveEvent(self, event: QMouseEvent):
self.leave_timer.start()
self.enter_timer.stop()
# 鼠标进入
def mouseEntered(self):
# 显示frame和标签
self.frame.show()
self.label.show()
# 鼠标离开
def mouseLeft(self):
# 隐藏frame和标签
self.frame.hide()
self.label.hide()
if __name__ == '__main__':
app = QApplication([])
your_widget = MyWidget()
your_widget.show()
app.exec_()
YXN-python
2024-11-05