23

質問が言うように、Gtk.main() の進行中にキーボード割り込みが発生するようにしようとしていますが、機能が完了するまでキーボード割り込みが発生していることに気付かないようです。

そこで、Gtk.main() を別のスレッドに貼り付けて、メイン スレッドにキーボードの割り込みを見つけさせ、スレッドを終了させようとしましたが、この記事で説明されているように、Gtk がスレッドでうまく動作しないことがわかりました。

キーボード割り込みを機能させる他の方法は考えられません。これは可能ですか?

私はpython3を使用していますが、私のプログラムを最終的にクロスプラットフォームにしたいと考えています。

4

3 に答える 3

10

受け入れられた答えは私にはうまくいきません。バグレポートで説明されているように、Gtk.main()呼び出しをに置き換えることで解決しました。GLib.MainLoop().run()

于 2015-11-20T19:35:39.000 に答える
4

また、シグナル モジュールを使用して SIGINT ハンドラ (Python スレッドで 100% CPU) をオーバーライドするときにも問題が発生しました。私にとっての代替案は次のとおりです。

def main():
    self.mainloop = GObject.MainLoop()
    try:
        self.mainloop.run()
    except KeyboardInterrupt:
        logger.info('Ctrl+C hit, quitting')
        self.exit()

def exit():
    self.mainloop.quit()
于 2015-12-27T20:22:29.743 に答える