Tastaturunterbrechung mit python gtk?

Also genau wie die Frage sagt, ich versuche, dass Key-Interrupts passiert, während Gtk.main () im Gange ist, aber es scheint einfach nicht zu bemerken, dass der Tastatur-Interrupt passiert, bis nach der Funktion fertig ist.

Also habe ich versucht, Gtk.main () in einem separaten Thread zu kleben, und den Hauptfaden finde die Tastatur unterbricht und beendest den Thread, aber dann herausgefunden, dass Gtk nicht gut mit Threads spielt, wie in diesem Artikel beschrieben

Ich kann nicht an irgendeine andere Weise denken, um Tastaturunterbrechungen zu arbeiten. Ist das möglich?

Ich benutze python3 und möchte, dass mein Programm schließlich Cross-Plattform ist.

3 Solutions collect form web for “Tastaturunterbrechung mit python gtk?”

Weil https://bugzilla.gnome.org/show_bug.cgi?id=622084 gtk-Anwendungen, die mit pygobject geschrieben werden, schließen sich nicht bei der Verwendung von Strg + C auf dem Terminal.

Um es zu umgehen, können Sie einen Unix-Signal-Handler wie folgt installieren:

 if __name__ == '__main__': import signal signal.signal(signal.SIGINT, signal.SIG_DFL) your_application_main() 

Die akzeptierte Antwort würde für mich nicht funktionieren. Ich habe es gelöst, indem ich den Gtk.main() Aufruf mit GLib.MainLoop().run() , wie im Fehlerbericht erläutert.

Ich habe auch in Schwierigkeiten geraten, wenn ich das Signalmodul benutze, um den SIGINT-Handler zu überschreiben (100% CPU auf dem Python-Thread); Eine Alternative für mich war folgendes:

 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() 
  • Datei öffnen Funktion mit Try & Except Python 2.7.1
  • Besser, um etwas zu versuchen und die Ausnahme zu fangen oder zu testen, ob es möglich ist, eine Ausnahme zu vermeiden?
  • Ist es eine gute Praxis, try-except-else in Python zu verwenden?
  • Python-Versuch endlich blockieren zurück [duplizieren]
  • General Dekorateur zu wrap versuchen außer in Python?
  • Python-try-endlich
  • Verwenden von python "mit" -Anweisung mit try-except block
  • Variable Umfang und versuchen Catch in Python
  • C #: Äquivalent des Pythons versuchen / catch / else Block
  • Wiederholen Versuchen und außer Klauseln
  • Wie kann ein Python-Kontext-Manager versuchen, Code auszuführen?
  • Python ist die beste Programmiersprache der Welt.