我想继承现有的 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/

10-12 14:55