使用 Python GTK3 Gtk.Application 打开多个应用程序窗口的正确方法

Proper way to open multiple appwindows with Python GTK3 Gtk.Application

我正在 Python3 下学习 GTK3,并且制作了一个目前只有一个 AppWindow 的应用程序。 我正在使用 Gtk.Application.

我不知道如何正确处理打开第二个 window。 我可以直接从主 Window 打开它,但我不知道如何将 Application 对象传递给它(我用谷歌搜索 "duckduckgoed" 但没有成功)。

申请是这样的:

谢谢。

我的代码(我去掉了不需要的代码):

# ################################################################
# MAIN APP WINDOW
class AppWindow(Gtk.ApplicationWindow):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # Here all the widgets and a button to open the second window

        self.show_all()

# ################################################################
# MAIN APP CLASS
class Application(Gtk.Application):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, application_id=MIKUNA_ID,
                         **kwargs)
        self.window = None

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

        action = Gio.SimpleAction.new("quit", None)
        action.connect("activate", self.on_quit)
        self.add_action(action)

    def do_activate(self):
        # We only allow a single window and raise any existing ones
        if not self.window:
            # Windows are associated with the application
            # when the last one is closed the application shuts down
            self.window = AppWindow(application=self, title="Mikuna")

        self.window.present()

    def on_quit(self, action, param):
        self.quit()

if __name__ == "__main__":
    app = Application()
    app.run(sys.argv)

Second window to edit a single item selected from the main window's list.

您只需从主 window 创建第二个 window,然后,可能是对主 window 暂时存在的 Gtk.Dialog。如果它是顶层window,你只需要让应用程序跟踪它,你希望它比你的主要window。