首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从GObject类继承?

如何从GObject类继承?
EN

Stack Overflow用户
提问于 2015-11-23 16:09:34
回答 1查看 659关注 0票数 2

我想用树视图小部件编写应用程序,我将存储类“Item”的对象。

我知道要做到这一点,我的“Item”类必须从GObject类继承。不幸的是,有些地方出了问题,我没有看到树上的项目文本。我只收到这样的警告:

代码语言:javascript
复制
Warning: unable to set property 'text' of type 'gchararray' from value of type '__main__+Item'

我要怎么做才能解决这个问题?

此示例程序演示了问题,并准备测试修复程序:

代码语言:javascript
复制
#!/usr/bin/env python3

from gi.repository import Gtk
from gi.repository import GObject


class Item(GObject.GObject):
    text = GObject.property(type=str, default='item', flags=GObject.PARAM_READWRITE)

    def __init__(self, title):
        GObject.GObject.__init__(self)
        self.__title = title

    def __str__(self):
        return self.__title

GObject.type_register(Item)


class MainWindow(Gtk.Window):
    def __init__(self):
        super().__init__(Gtk.WindowType.TOPLEVEL)
        self.connect('destroy', self.on_destroy)
        tree_model = Gtk.TreeStore(Item.__gtype__)
        # tree_model = Gtk.TreeStore(str)
        text_renderer = Gtk.CellRendererText()
        text_column = Gtk.TreeViewColumn(None, text_renderer)
        text_column.add_attribute(text_renderer, 'text', 0)
        tree_view = Gtk.TreeView(tree_model)
        tree_view.append_column(text_column)
        self.add(tree_view)
        self.show_all()
        tree_model.append(None, (Item('test'),))
        # tree_model.append(None, ('It works!',))

    def on_destroy(self, e):
        Gtk.main_quit()


if __name__ == '__main__':
    MainWindow()
    Gtk.main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-24 10:17:51

GtkCellRendererTexttext属性需要字符串(gchararray)数据,并且它正在接收自定义的GObject值。__str__函数在Python级别上工作,从来不被GObject调用。

幸运的是,您想要实现的不需要子类GObject。您需要执行以下操作:

  • 将树存储列指定为GObject.TYPE_PYOBJECT。这将允许您将实例附加到树存储中,而无需继承GObject或特殊属性。
  • 使用树视图列上的set_cell_data_func从存储在模型中的实例中提取文本数据。

有关此技术的工作示例,请参见this answer

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33875497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档