我们正在构建基于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主循环一起完成的额外工作?
答案 0 :(得分:0)
在Qt中进行轮询的惯用方法是将轮询代码放在一个插槽中,并将来自QTimer
的超时信号连接到一个零超时。