okelet
okelet

Reputation: 756

Stop Python Gtk.Application using Ctrl+C

I am creating an application. Previously, I were using Gtk.Main() to start my application, and created some hooks to stop the application from the command line using Ctrl+C. Now, I have migrated the application to a more "standard" Gtk.Application, but can't get it to stop using Ctrl+C.

This is a very simple Gtk.Application, that when is run from the command line, it can't be stopped using Ctrl+C:

from gi.repository import Gtk
import sys

# a Gtk ApplicationWindow


class MyWindow(Gtk.ApplicationWindow):
    # constructor: the title is "Welcome to GNOME" and the window belongs
    # to the application app

    def __init__(self, app):
        Gtk.Window.__init__(self, title="Welcome to GNOME", application=app)


class MyApplication(Gtk.Application):
    # constructor of the Gtk Application

    def __init__(self):
        Gtk.Application.__init__(self)

    # create and activate a MyWindow, with self (the MyApplication) as
    # application the window belongs to.
    # Note that the function in C activate() becomes do_activate() in Python
    def do_activate(self):
        win = MyWindow(self)
        # show the window and all its content
        # this line could go in the constructor of MyWindow as well
        win.show_all()

    # start up the application
    # Note that the function in C startup() becomes do_startup() in Python
    def do_startup(self):
        Gtk.Application.do_startup(self)

# create and run the application, exit with the value returned by
# running the program
app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)

Upvotes: 5

Views: 1984

Answers (3)

juzzlin
juzzlin

Reputation: 47875

This worked with Gtk 3.0:

import signal
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import GLib

app = Application()
GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, Gtk.main_quit)

Upvotes: 0

lazka
lazka

Reputation: 743

import signal
from gi.repository import GLib

...

GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, app.quit)

Upvotes: 7

user7342556
user7342556

Reputation: 1

You can use Ctrl+Z to stop the execution of script.

Upvotes: -3

Related Questions