如何将pygtk小部件添加到Glade调色板?
说我已经创建了一个这样的gtk Widget:
class AwesomeTextView (gtk.TextView): def set_font(self, font_description): self.modify_font(pango.FontDescription(font_description))
如何将新小部件添加到Glade Interface Builder中的调色板?
好的,这将是一步一步:
- 我们的小部件将被命名为
AwesomeTextView
,它所在的模块将被称为awesome_text_view
。 这些是我们需要的唯一名称。
glade小部件由两部分组成,模块和目录。
-
我们创建一个目录,
awesome_text_view.xml
,并(以root身份)将其保存在/usr/share/glade3/catalogs/
这就是它的样子:
glade_python_init 您应该复制并调整此模板,因为它可以正常工作 。 🙂
-
我们创建一个模块
awesome_text_view.py
,并(再次以root身份)将其保存在/usr/lib/glade3/modules/
这是看起来像:
import gobject import gtk import pango class AwesomeTextView (gtk.TextView): __gtype_name__ = 'AwesomeTextView' def __init__(self): gtk.TextView.__init__(self) def set_font(self, font_description): self.modify_font(pango.FontDescription(font_description))
它现在显示在Glade中,您可以将其添加到您的应用程序中。
-
最后,你只需要
export PYTHONPATH="$PYTHONPATH:/usr/lib/glade3/modules/"
而已!
这是一个小测试应用程序,显示如何使用您的小部件:
import gtk import awesome_text_view class App (object): builder = gtk.Builder() def __init__(self): self.builder.add_from_file("test.glade") self.builder.connect_signals(self) self.builder.get_object("awesome_text_view1").set_font("mono") gtk.main() def on_window1_destroy(self, widget): gtk.main_quit() App()
你需要为你的小部件制作一个目录,看到这个文件夹: /usr/share/glade3/catalogs/
你会看到gnome.xml
,看看一个例子。
另请参阅gnome文档: