【问题标题】:gtk logic behind treeviewcolumns needing cell renderers需要单元格渲染器的树视图列背后的 gtk 逻辑
【发布时间】:2010-08-21 22:40:24
【问题描述】:

根据我对 GTK 的了解,如果我有一个 TreeView,我不能只使用任何我想显示列信息的小部件。对于文本,您需要gtk.CellRendererText。对于切换按钮,gtk.CellRendererToggle。对于其他任何事情,您似乎必须自己实现,从我看到的按钮示例来看,这看起来并不简单。

首先,是这样吗?有没有一种简单的方法来设置您想要用于显示某些文本的任何小部件?如果不是,那么为什么要以这种方式实施?如果我正在设计 GTK,我会创建某种系统,当添加一行时以及当某些数据模型信息发生更改时,将调用用户指定的回调,这将分别添加或更改相应的小部件。

【问题讨论】:

  • 您最好在 gtk-devel 列表中询问 GTK 开发人员。

标签: python user-interface gtk pygtk


【解决方案1】:

要编写自定义 CellRenderer (copy-pasted from this link!):

  • 注册一些您的新属性 渲染器需要类型系统 并编写您自己的 set_propertyget_property 函数来设置和获取 你的新渲染器的属性。

  • 编写你自己的cell_renderer_get_size 函数并覆盖父级 对象的功能(通常是父 是 GtkCellRenderer 类型。注意 你应该遵守标准 填充和单元格的属性 此处父对象的对齐方式。

  • 编写你自己的cell_renderer_render 函数并覆盖父级 对象的功能。这个功能做 实际渲染。

还有 there is a good/simple example 用于 pyGTK。

写一个自定义的CellRenderer并不算太难,难的是如何写一个自定义的widget。如果您已经学会了如何编写自定义小部件,那么编写自定义 CellRenderer 就很容易了。


这种设计背后的逻辑是灵活性。 TreeViewColumn 指示 CellRenderer 应如何显示数据(来自 TreeModel),因此表示布尔类型值的 TreeViewColumn 可以显示为文本(CellRendererText)或显示为复选框(CellRendererToggle)。例如表示整数类型值的 TreeViewColumn,可以显示为文本(CellRendererText)或显示为进度条(CellRendererProgress)或显示为旋转按钮(CellRendererSpin)或显示为我们想要的任何内容.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2015-05-14
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多