【问题标题】:How to quit a pygtk application after last window is closed/destroyed如何在最后一个窗口关闭/销毁后退出 pygtk 应用程序
【发布时间】:2011-09-27 10:33:22
【问题描述】:

有没有办法让 gtk 在应用程序的最后一个打开窗口关闭/销毁时自动调用 gtk.main_quit()

如果没有提供此功能的直接功能,我可以考虑以下内容: 在窗口的destroy方法中:获取进程中打开的窗口列表,如果为空则退出。有没有办法得到这样的清单?

显而易见的解决方案是手动跟踪所有打开的窗口,但我希望尽可能避免这种情况。

【问题讨论】:

标签: python gtk window pygtk quit


【解决方案1】:

主窗口的destroy信号必须连接到gtk main_quit:

window.connect("destroy", gtk.main_quit)

【讨论】:

  • 我认为OP是指有多个主窗口的情况。想象一个文字编辑器,它为每个活动文档打开一个新窗口。
  • 如果是这种情况,可以只统计打开的窗口,创建时将全局变量加一,销毁时减一就足够了,无需保留列表。
  • 如果您的应用程序符合逻辑,您也可以使用 GtkAppliction。这样会更好,GtkApplication 会为你处理这个逻辑。
  • @erick2red 这个类有对应的 pygtk 吗?
  • 这取决于您使用的绑定,但是是的,pygobject 绑定是使用 GObject Introspection 构建的,因此它们具有 C 库中存在的所有功能。不完全是您想要的,但请看 [this] (readthedocs.org/docs/python-gtk-3-tutorial/en/latest)。这样你就可以从 python 中使用所有的 GLib/Gtk+ 系统了。
【解决方案2】:

使用方法 gtk.main_level() 获取主循环的当前嵌套级别。调用 gtk.main() 函数增加嵌套层级,调用 gtk.main_quit() 函数降低嵌套层级

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多