keyboard interrupt with with python gtk?

后端 未结 3 1685
孤城傲影
孤城傲影 2020-12-28 15:54

So just like the question says, I\'m trying to let keyboard interrupts happens while Gtk.main() is in progress, however, it just doesn\'t seem to notice that the keyboard in

相关标签:
3条回答
  • 2020-12-28 16:23

    because of https://bugzilla.gnome.org/show_bug.cgi?id=622084 gtk applications written using pygobject will not close themselves when using Ctrl + C on the terminal.

    to work around it, you can install a Unix signal handler like this:

    if __name__ == '__main__':
        import signal
        signal.signal(signal.SIGINT, signal.SIG_DFL)
        your_application_main()
    
    0 讨论(0)
  • 2020-12-28 16:23

    The accepted answer would not work for me. I resolved it by replacing the Gtk.main() call with GLib.MainLoop().run(), as explained in the bug report.

    0 讨论(0)
  • 2020-12-28 16:39

    I also ran into trouble when using the signal module to override the SIGINT handler (100% CPU on the python thread); an alternative for me was the following:

    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()
    
    0 讨论(0)
提交回复
热议问题