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 イベント処理は、標準の入力ツールがなく、メインの python プログラム内で処理されるカスタム キーパッドと NFC アンテナしかないため、実際には適用できません。

問題は、PyQt4 のメイン ループと一緒に行う必要がある追加の作業をどのように処理するかということです。

4

1 に答える 1

0

Qt でポーリングを行う慣用的な方法は、ポーリング コードをスロットに配置QTimerし、ゼロ タイムアウトで からのタイムアウト シグナルに接続することです。

于 2013-10-13T00:51:44.213 に答える