0

我们正在构建一个基于 RaspberryPi 的硬件,并使用 PyQt4 来处理一个 3 英寸小屏幕上的输出。

除了屏幕之外,我们还有一个简单的硬件键盘,需要循环处理以检查按下的键并采取相应措施。

为了简化事情,代码现在看起来像这样:

while True:
        gui_initialized = False
        current_screen = None
        if gui_initialized is False:
            app = QtGui.QApplication(sys.argv)
            main_win = gui.GUI()
            gui_initialized = True
            sys.exit(app.exec_())

        key_code = kp.getKey()

由于 PyQt4 主循环,此代码是错误的。一旦执行到达生产线sys.exit(app.exec_())- 它就永远停在那里,永远不会到达key_code = kp.getKey()。但是我需要key_code = kp.getKey()在循环中的某个地方执行来处理键盘,并且还需要做其他后台工作。

事实上,通常的 Qt 事件处理在我们的案例中并不真正适用,因为我们没有标准输入工具,只有自定义键盘和 NFC 天线,两者都在主 python 程序中处理。

所以问题是 - 我如何处理我需要与 PyQt4 主循环一起做的额外工作?

4

1 回答 1

0

在 Qt 中进行轮询的惯用方法是将轮询代码放在一个插槽中,然后将来自 a 的超时信号连接到它,并且超时QTimer为零。

于 2013-10-13T00:51:44.213 回答