私はアプリケーションを作成しています。以前はGtk.Main()
を使ってアプリケーションを起動し、コマンドラインからアプリケーションを停止させるフックをいくつか作成してCtrl+C
を使用しました。今、アプリケーションをより標準的な "Gtk.Application
"に移行しましたが、Ctrl+C
の使用を中止することはできません。Ctrl + Cを使用してPython Gtk.Applicationを終了
これは、コマンドラインから実行されたとき、それはCtrl+C
を使用して停止することができないという、非常にシンプルなGtk.Application
です:
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)
ここにコードを入れてください。リモートではありません – frlan
あなたのコードやPythonに固有のものでなければなりません。私のPerl GtkApplicationコードはCtrl + Cで正常終了します。 – oldtechaa
はい、それはPython特有のものです。理由を正しく覚えていれば、KeyboardInterrupt例外はメインループ反復に渡って伝播しません。 – ptomato