我想继承现有的 Gtk 小部件并让它与 Glade3 一起工作。代码都是python,我用的是PyGObject。
我想要做的是扩展 Gtk.TextView 并能够将它添加到我的 Glade UI 中,就好像它是一个 native 小部件一样。
我读到 Glade 2 可以做到这一点,但我不确定如何使用 Glade 3 做到这一点,而且我似乎找不到任何关于此的示例或文档。任何帮助,将不胜感激。谢谢。
最佳答案
终于知道怎么做了。首先,您必须声明您的空地文件依赖于 目录 。
<?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 文件。要扩展树 View ,它应该如下所示:
<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 的方法。但是你可以做的是在glade中添加一个普通的TextView,保存glade文件并在文本编辑器中打开它。只需查找您创建的树 View 并像这样更改:
- <object class="TreeView" id="treeview1">
+ <object class="CustomTreeView" id="treeview1">
在空地中将其打开并显示出来。然后只需在 python 中定义一个 CustomTreeView 类并根据需要进行扩展。
关于python - 空地 3 中的自定义 python 小部件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11568062/