【发布时间】:2018-10-03 18:05:55
【问题描述】:
我需要向你们寻求建议,因为我的想法已经不多了。我正在处理可点击的标签。我已经完成了一些“可点击标签”类并处理了 mouseover 事件——它改变了标签边框并在鼠标离开时返回到正常状态。
现在我希望它在标签上具有自定义发光效果,但我希望它在单击后返回正常状态,比如说 0.5 秒。
我希望我的标签带有模仿按钮的图像。 time.sleep 效果不佳,尤其是在点击垃圾邮件时,它会冻结应用程序主线程。
希望我不是在重新发明轮子,但据我所知,这是要走的路。
这里是示例代码,感谢任何答案。
from PySide2.QtWidgets import QLabel, QSizePolicy, QGraphicsDropShadowEffect
from PySide2.QtGui import QPixmap
from PySide2.QtCore import (Signal, QEvent, QObject, QRect)
class ClickableLabel(QLabel):
def __init__(self, pic_path, width, height, border_color, click_function):
super(ClickableLabel, self).__init__()
# Setting the picture path and setting pixmap to label
self.pic_path = pic_path
self.pixmap = QPixmap(self.pic_path)
self.setPixmap(self.pixmap)
# Set the size
self.setFixedSize(width, height)
# Enable tracking and assign function
self.setMouseTracking(True)
self.click_function = click_function
# Set default
if border_color is None:
self.border_color = 'lightblue'
else:
self.border_color = border_color
def mouseMoveEvent(self, event):
# event.pos().x(), event.pos().y()
self.setStyleSheet("border: 1px solid " + str(self.border_color) + ";")
def leaveEvent(self, event):
# event.pos().x(), event.pos().y()
self.setStyleSheet("border: None")
def mousePressEvent(self, event):
self.click_function()
effect = QGraphicsDropShadowEffect(self)
effect.setOffset(0, 0)
effect.setBlurRadius(20)
effect.setColor(self.border_color)
self.setGraphicsEffect(effect)
【问题讨论】: