在 PyQt5 小部件中检测单击鼠标 - 缺少 mouseClickEvent 函数
Posted
技术标签:
【中文标题】在 PyQt5 小部件中检测单击鼠标 - 缺少 mouseClickEvent 函数【英文标题】:Detect single mouse click in PyQt5 Widgets - missing mouseClickEvent function 【发布时间】:2021-08-10 18:33:41 【问题描述】:我想在 PyQt5 中识别在 QWidget
上单击鼠标。在docs 中有mouseDoubleClickEvent
或mousePressEvent
,但没有mouseClickEvent
的单击功能。我如何获得该功能?谢谢
顺便说一句,我注意到 PyQtGraph 确实有一个 mouseClickEvent
函数。
【问题讨论】:
“点击”是指按下然后释放吗? 我的意思是在同一个地方发布的新闻。 还有mouseReleaseEvent
。如果您的目标是检测单击鼠标,这可能是一个选项
【参考方案1】:
Qt 本身不提供“点击”事件,您必须基于mousePressEvent
和mouseReleaseEvent
来实现这样的功能,方法是检查释放是否发生在小部件的几何形状内(并且,可能是按下并释放了正确的鼠标按钮)。
class ClickWidget(QWidget):
pressPos = None
clicked = pyqtSignal()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.pressPos = event.pos()
def mouseReleaseEvent(self, event):
# ensure that the left button was pressed *and* released within the
# geometry of the widget; if so, emit the signal;
if (self.pressPos is not None and
event.button() == Qt.LeftButton and
event.pos() in self.rect()):
self.clicked.emit()
self.pressPos = None
【讨论】:
以上是关于在 PyQt5 小部件中检测单击鼠标 - 缺少 mouseClickEvent 函数的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5 Tab Widget:如何在鼠标单击时获取活动选项卡窗口的索引?
尽管更新了小部件,但 Pyqt5 更新的小部件未添加到布局中