我需要编写一个行为类似于Gtk.CellRenderer
的自定义CellRendererToogleWithNone
(我们称其为Gtk.CellRendererToggle
),但是我不仅希望支持True
和False
,还希望它支持None
像这样显示为不一致状态:
在切换时,我想按定义的顺序旋转,例如:True-> False-> None(但这可能是最简单的部分,我仍然认为我提到了这一点)
我也不知道如何使它与TreeStore一起使用,因为如果这样做的话
self.treestore = Gtk.TreeStore.new(types = (bool,))
iter = self.treestore.append(parent = None, row = (None,))
它将把任何None
值转换为False
,因为bool
似乎不允许None
值
我无法在线找到任何有用的自定义Gtk.CellRenderer
示例。
我想通过从Gtk.CellRenderer
继承而不是从Gtk.CellRendererToggle
继承来这样做,因为这也应该作为一个有用的示例来实现更多像这样的单元格渲染器。
我只能猜测我必须为TreeStore
定义一些自定义数据类型,例如bool_or_none
而不是bool
(也不知道该怎么做),并将自己的Gtk.ToggleButton
放在自己的内部自定义CellRendererToogleWithNone
。
编辑0:
关于如何编写自定义This post的Gtk.CellRenderer
提供了一些提示,这些提示可能可以重用,但不能解决我的问题。它没有显示如何使Gtk.TreeStore
接受None
变量的bool
值,而且我不了解那里的所有内容。它甚至不使用Gtk.Button,而是似乎在小部件内部绘制一个框,我猜这可能是父级。我不想绘制自己的Toggle,我想重用Gtk.ToggleButton
及其inconsistent
属性
Gtk.CellRendererToggle
,在True,None(显示为不一致)和False之间切换。