gpt4 book ai didi

python - glade 3 中的自定义 python 小部件

转载 作者:太空狗 更新时间:2023-10-30 02:48:46 26 4
gpt4 key购买 nike

我想子类化一个现有的 Gtk 小部件并使其与 Glade3 一起工作。代码都是 python,我使用的是 PyGObject。

我想做的是扩展 Gtk.TextView 并能够将它添加到我的 glade UI 中,就好像它是一个 native 小部件一样。

我读到 Glade 2 可以做到这一点,但我不确定如何使用 Glade 3 做到这一点,而且我似乎找不到任何相关示例或文档。任何帮助,将不胜感激。谢谢。

最佳答案

终于找到方法了。首先,您必须声明您的 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 文件。要扩展 TreeView ,它应该看起来像这样:

<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 文件并在文本编辑器中打开它。只需查找您创建的 TreeView 并像这样更改:

-              <object class="TreeView" id="treeview1">
+ <object class="CustomTreeView" id="treeview1">

在林间空地重新打开它,它就会出现。然后只需在 python 中定义一个 CustomTreeView 类并根据需要进行扩展。

关于python - glade 3 中的自定义 python 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11568062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com