如何将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小部件由两部分组成,模块和目录。

  1. 我们创建一个目录, awesome_text_view.xml ,并(以root身份)将其保存在/usr/share/glade3/catalogs/

    这就是它的样子:

      glade_python_init        

    您应该复制并调整此模板,因为它可以正常工作 。 🙂

  2. 我们创建一个模块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中,您可以将其添加到您的应用程序中。

  3. 最后,你只需要

      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文档:

http://developer.gnome.org/gladeui/stable/catalogintro.html