使用 GtkBuilder 创建小部件

使用 GtkBuilder 创建小部件

我正在使用 Glade 设计一个带有小部件的 Box,然后在运行时将这些小部件加载到我的 UI 中。为了在运行时创建每个带有小部件的 Box,我创建一个新的 GtkBuilder,调用 add_from_string 并传入 Glade 创建的 .ui 文件中的文本,然后在 UI 中使用 get_object("box1") 返回的对象。我知道我可以使用代码创建小部件,但目前,我想使用 Glade 创建的 .ui 文件。但是,为每个要创建的 Box 实例化一个新的 GtkBuilder 对象和浪费的 Window 对象似乎效率不高。有没有更有效的方法来加载 .ui 文件,而无需创建新的 GtkWidget 对象和浪费的 Window 对象?

谢谢,万斯

答案1

如果您想在应用程序运行时用新小部件填充 GUI,那么为它们创建一堆单独的 .ui 文件和 GtkBuilders 是完全错误的。使用代码创建单个小部件非常容易。

我假设你使用 Python,因为你将你的问题标记为pygtk

看一个简单的例子:

from gi.repository import Gtk

和:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

好吧,它本身无法真正发挥作用,但这就是您创建新小部件的方法。有关特定小部件的详细信息,请参阅此精美的教程/文档:http://python-gtk-3-tutorial.readthedocs.org/

答案2

如果您希望在运行时将不同的块推送到不同的区域,您可以构建一个包含大量窗口的 glade 文件并重新设置它们的父级。例如,查看我为另一个问题

相关内容