我有一个关于窗口和按钮实现的问题。如果我设置了一个工具栏,并且上面有一个按钮,是否可以让它在程序中打开一个窗口?我的意思是像 notepad1 函数那样打开程序的不同部分?或者我可以让它模仿系统设置的行为,在同一个窗口内完全打开一个窗口?如果您能帮忙,我将不胜感激。我正在使用默认的 glade 文件,希望这对任何人都有帮助。
答案1
我也在我的应用程序中这样做。我通过执行类似以下操作实现了此目的:
在主窗口中获取要用作父窗口的小部件的引用。它必须是的派生项GtkContainer
(例如GtkBox
)。在我的实例中,我在类构造函数中执行了类似以下操作:
self.itemAsMyContainer = self.builder.get_object("name_of_object_id")
然后,我使用 glade 创建另一个单独的 ui 文件,并以GtkContainer
派生类(在我的情况下GtkBox
)作为其顶级对象,然后以类似于 quick 的方式修改其类名。然后,我以类似于 quick_lib/Window.py
模板的方式为其创建了一个单独的类。完成后,我可以简单地实例化这个新类,并使用如下代码将其附加到我引用的容器中:
self.my_sub_ui = MySexyGtkContainerSubClass()
self.itemAsMyContainer.pack_start(self.my_sub_ui)
我相信这种方法也可以用于另一个窗口,但你可能需要取消它的父级。有关更多信息,请参阅此问题这里