我正在使用Glade设计一个具有小部件的Box,然后在运行时将这些小部件加载到我的UI中。为了在运行时使用小部件创建每个Box,我创建了一个新的GtkBuilder,调用add_from_string从.ui文件Glade创建传入文本,然后在UI中使用从get_object("box1")返回的对象。我知道我可以用代码创建小部件,但现在,我想使用Glade创建的.ui文件。但是,实例化一个新的GtkBuilder对象和我想要创建的每个Box都浪费掉的窗口对象似乎是效率低下的。是否有更有效的方法来加载.ui文件而不创建新的GtkWidget对象和浪费窗口对象?
谢谢,万斯
发布于 2012-07-01 22:27:19
如果您想在应用程序运行时用新的小部件填充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/
发布于 2012-07-02 15:20:14
如果您希望在运行时在不同的区域中插入不同的块,您可以构建一个包含大量窗口的glade文件并重新创建它们。举个例子,看看我为另一个问题做了什么。
https://askubuntu.com/questions/158446
复制相似问题