【发布时间】:2014-07-18 09:20:47
【问题描述】:
我正在尝试实现一个功能,如果用户有一段时间没有与 GUI 交互 X,我将停止 GUI 的某些功能。
目前我设置了一个时间戳,如果在 X 秒内没有点击任何按钮,GUI 将终止某些功能
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
我认为这有点 hacky,但它适用于我设想的功能,但是,我不知道如何将它插入到 QT 的执行循环中。
任何建议将不胜感激
【问题讨论】:
-
如果有一个计时器触发小部件(按钮等)所在的框架上的启用/禁用行为会更好。这将解决缩放问题。
-
谢谢,Qt 框架会记录鼠标点击吗?
-
我认为它是如何工作的;您
connect是框架及其小部件的单击处理程序。当点击事件被触发时,您将事件从小部件传递到框架(我认为通过调用event.Skip(),您需要检查这一点)。 -
酷,所以我想我会将所有按钮分组在一个处理程序中,并以某种方式将处理程序连接到框架?然后
groups_of_button.triggered.connect(keep_alive)? -
我建议您的原始解决方案很好,如果它不能很好地扩展到 N 个按钮,您可能需要重新考虑如何创建这些 N 个按钮(例如,使它们循环,将它们存储在可迭代的数据结构中,以便您可以遍历它们并将它们连接到您的 keepalive 方法等)
标签: python qt user-interface pyqt