【发布时间】:2017-01-05 09:00:02
【问题描述】:
我正在创建一个应用程序。以前,我使用Gtk.Main() 来启动我的应用程序,并使用Ctrl+C 创建了一些挂钩来从命令行停止应用程序。现在,我已将应用程序迁移到更“标准”的Gtk.Application,但无法停止使用Ctrl+C。
这是一个非常简单的Gtk.Application,当从命令行运行时,使用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)
【问题讨论】:
-
请将代码 sn-ps 放在这里而不是远程
-
我相信这必须特定于您的代码或 Python。我的 Perl GtkApplication 代码以 Ctrl+C 结束。
-
是的,它特定于 Python。如果我没记错原因,KeyboardInterrupt 异常不会在主循环迭代中传播。