我在Python3下学习GTK3并制作了一款到目前为止只有一个AppWindow的应用程序。 我使用的是Gtk.Application。
我无法弄清楚如何正确处理打开第二个窗口。 我可以直接从我的主窗口打开它,但我不知道如何将Application对象传递给它(我用googled和#34; 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)
答案 0 :(得分:0)
编辑从主窗口列表中选择的单个项目的第二个窗口。
您只需从主窗口创建第二个窗口,然后可能是主窗口瞬态的Gtk.Dialog
。如果它是一个你想要超出主窗口的顶层窗口,你只需要让应用程序跟踪它。