通过检查GUI上的鼠标点击来检测PyQt中用户的空闲状态

1 投票
1 回答
580 浏览
提问于 2025-04-18 07:53

我正在尝试实现一个功能,也就是如果用户在图形界面(GUI)上没有互动超过一段时间X,我就会停止一些功能。

现在我设置了一个时间戳,如果在X秒内没有点击任何按钮,图形界面就会终止某些功能。

button1.triggered.connect(keep_alive)
button2.triggered.connect(keep_alive)
....
buttonN.triggered.connect(keep_alive)

如你所见,这种方法并不是很优雅,而且当按钮数量增加时也不太好用。因此,我现在在研究另一种方法,就是监控鼠标点击。

mouse = app.mouseButtons()

if mouse != Qtcore.Qt.NoButton:
    #keep_alive

我觉得这个方法有点小聪明,但它能实现我想要的功能。不过,我不知道怎么把这个方法放到QT的执行循环里。

任何建议都非常欢迎。

1 个回答

0

你需要通过重新实现 mousePressEvent 来拦截鼠标事件。

点击这里查看详细信息

为了确保这不会影响你其他的功能,你需要把事件传递给父窗口。想了解更多细节,可以查看这个链接:点击这里

我建议在主窗口中实现这个功能,并确保所有的鼠标事件都能传递到这里。

撰写回答