我想将现有的Gtk小部件子类化并使其与Glade3一起使用。代码都是python,我正在使用PyGObject。
我想要做的是扩展Gtk.TextView并将其添加到我的glade UI中,就像它是一个原生小部件一样。
我读过Glade 2有可能,但我不知道如何使用Glade 3,我似乎无法找到任何关于此的示例或文档。任何帮助,将不胜感激。感谢。
答案 0 :(得分:5)
终于找到了怎么做。首先,您必须声明您的glade文件取决于目录。
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<!-- interface-requires the_catalog_name 1.0 -->
...Rest of the glade file...
接下来,创建一个catalog.xml文件。要扩展树视图,它应该如下所示:
<glade-catalog name="the_catalog_name" domain="glade-3"
depends="gtk+" version="1.0">
<glade-widget-classes>
<glade-widget-class title="My Custom Text View" name="CustomTextView"
generic-name="CustomTextView" parent="GtkTextView"
icon-name="widget-gtk-textview"/>
</glade-widget-classes>
</glade-catalog>
就是这样。显然,还没有编写python代码,但这不会阻止Glade显示您的自定义小部件。它只会将其视为普通的TextView,Label或其他您想要扩展的内容。
哦,遗憾的是,我无法在Glade中找到创建CustomTextView的方法。但你可以做的是在林间空地添加一个常规TextView,保存glade文件并在文本编辑器中打开它。只需查看您创建的树视图并进行如下更改:
- <object class="TreeView" id="treeview1">
+ <object class="CustomTreeView" id="treeview1">
在林间空地打开它然后显示出来。然后在python中定义一个CustomTreeView类并根据需要进行扩展。