假设我已经创建了一个gtk小部件,如下所示:
class AwesomeTextView (gtk.TextView):
def set_font(self, font_description):
self.modify_font(pango.FontDescription(font_description))
如何在Glade Interface Builder中将新的小部件添加到面板中?
假设我已经创建了一个gtk小部件,如下所示:
class AwesomeTextView (gtk.TextView):
def set_font(self, font_description):
self.modify_font(pango.FontDescription(font_description))
如何在Glade Interface Builder中将新的小部件添加到面板中?
Answers:
好的,这将是逐步的:
AwesomeTextView
,其中的模块将被调用awesome_text_view
。这些是我们唯一需要的名称。林间小部件由模块和目录两部分组成。
我们创建一个目录,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>
您应该复制并修改此模板,以使其正常工作。:-)
我们创建一个模块,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文档:
gtk+.xml
是说是gnome.xml
由于某种原因,或者我只是因为某种原因而失踪了吗?