Python Gtk+;3 Window.present不能与GNOME Builder一起使用

Python Gtk+;3 Window.present不能与GNOME Builder一起使用,python,gtk,gtk3,Python,Gtk,Gtk3,环境: Ubuntu Gnome 16.04.3 GNOME生成器3.26.3 GNOME生成器生成的项目使用GtkTemplate来解释ui,但我将其更改为使用Gtk.Builder来解释。修改后,它不工作。 我看不到任何错误消息 class Application(Gtk.Application): def __init__(self): super().__init__(application_id='org.gnome.Ee',

环境:

  • Ubuntu Gnome 16.04.3
  • GNOME生成器3.26.3
GNOME生成器生成的项目使用GtkTemplate来解释ui,但我将其更改为使用Gtk.Builder来解释。修改后,它不工作。 我看不到任何错误消息

class Application(Gtk.Application):
    def __init__(self):
        super().__init__(application_id='org.gnome.Ee',
                         flags = Gio.ApplicationFlags.FLAGS_NONE)
    def do_startup(self):
        print('do_startup')
        Gtk.Application.do_startup(self)
        builder = Gtk.Builder()
        builder.add_from_resource("/org/gnome/Ee/window.ui")
        print(builder)
        self.builder = builder
    def do_activate(self):
        print("do_activate")
        win = self.props.active_window
        if not win:
            win = self.builder.get_object("EeWindow")
            print(win)
        win.present() # not work, can not see the window
我已将演示代码上载到Github:


任何帮助都将不胜感激

应用程序不知道该窗口,因此它会立即退出。您需要在创建窗口实例后调用
win.set\u应用程序(self)

您的git历史记录无法显示您所做的修改。您是否尝试过将
win.present()
替换为
win.show_all()
?@liberforce抱歉,我已重新上载了包含修改历史记录的项目。你现在可以查一下。谢谢
win.show_all()
不起作用。非常感谢!还有一个问题,为什么这个demo()可以工作?它没有显式地创建
Gtk.Application
,因此调用
Gtk.main()
,而不是
Application.run()