使用 Python GTK3 Gtk.Application 打开多个应用程序窗口的正确方法
Proper way to open multiple appwindows with Python GTK3 Gtk.Application
我正在 Python3 下学习 GTK3,并且制作了一个目前只有一个 AppWindow 的应用程序。
我正在使用 Gtk.Application.
我不知道如何正确处理打开第二个 window。
我可以直接从主 Window 打开它,但我不知道如何将 Application 对象传递给它(我用谷歌搜索 "duckduckgoed" 但没有成功)。
- 我需要打电话给 Gtk.Application 才能打开第二个 window 吗?
- 如何让 Gtk.Application 跟踪这个新的 window?
申请是这样的:
- Main window 包含来自数据库的对象列表。
- 第二个 window 编辑从主要 window 中选择的单个项目
列表。
谢谢。
我的代码(我去掉了不需要的代码):
# ################################################################
# 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。
我正在 Python3 下学习 GTK3,并且制作了一个目前只有一个 AppWindow 的应用程序。 我正在使用 Gtk.Application.
我不知道如何正确处理打开第二个 window。 我可以直接从主 Window 打开它,但我不知道如何将 Application 对象传递给它(我用谷歌搜索 "duckduckgoed" 但没有成功)。
- 我需要打电话给 Gtk.Application 才能打开第二个 window 吗?
- 如何让 Gtk.Application 跟踪这个新的 window?
申请是这样的:
- Main window 包含来自数据库的对象列表。
- 第二个 window 编辑从主要 window 中选择的单个项目 列表。
谢谢。
我的代码(我去掉了不需要的代码):
# ################################################################
# 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。