如何在glade面板中添加pygtk小部件?


8

假设我已经创建了一个gtk小部件,如下所示:

class AwesomeTextView (gtk.TextView):

    def set_font(self, font_description):
        self.modify_font(pango.FontDescription(font_description))

如何在Glade Interface Builder中将新的小部件添加到面板中?

在此处输入图片说明

Answers:


7

好的,这将是逐步的:

  • 我们的小部件将被命名AwesomeTextView,其中的模块将被调用awesome_text_view。这些是我们唯一需要的名称。

林间小部件由模块和目录两部分组成。

  1. 我们创建一个目录,awesome_text_view.xml并将其(作为根目录)保存在/usr/share/glade3/catalogs/

    看起来是这样的:

    <glade-catalog name="awesome_text_view"
        library="gladepython"
        domain="glade-3"
        depends="gtk+">
    
     <init-function>glade_python_init</init-function>
    
     <glade-widget-classes>
       <glade-widget-class title="Awesome TextView"
        name="AwesomeTextView"
        generic-name="awesome_text_view"/>
     </glade-widget-classes>
    
     <glade-widget-group name="python" title="Python">
       <glade-widget-class-ref name="AwesomeTextView"/>
     </glade-widget-group>
    </glade-catalog>

    您应该复制并修改此模板,以使其正常工作。:-)

  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()

因此,据我所知,在实践中,没有办法轻松地将自定义窗口小部件与您的代码一起分发,并让贡献者将其添加到Glade,而无需他们在系统上手动安装它。Glade很棒,很遗憾,自定义窗口小部件必须先加入系统的胆量才能添加。无论如何,很好的答案!
戴维·普拉内拉

在12.04中,这对我不起作用。林间空地打印这样的:(林间空地:25053):GladeUI-WARNING **:失败'gladepython'来加载外部库
user1477

1

您需要为小部件创建目录,请参见以下文件夹:/usr/share/glade3/catalogs/然后,您将看到gnome.xml示例。

另请参阅gnome文档:

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


不起作用:-(看来文件根本是错误的,我将更新我的问题。此外,您是说gtk+.xml是说是gnome.xml由于某种原因,或者我只是因为某种原因而失踪了吗?
Stefano Palazzo

您必须制作自己的xml文件,而无需修改现有的xml文件。
Martin Owens -doctormo- 2011年

我了解到,这只是我没有gnome.xml,我想知道这是否可能表示问题。您发布的链接中的说明在任何情况下都是错误的,仍然可以解决:-)
Stefano Palazzo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.