Python 需要单元渲染器的TreeView列背后的gtk逻辑

Python 需要单元渲染器的TreeView列背后的gtk逻辑,python,user-interface,gtk,pygtk,Python,User Interface,Gtk,Pygtk,从我对GTK的理解来看,如果我有一个TreeView,我不能只使用任何小部件来显示有关列的信息。对于文本,您需要一个gtk.cellRenderText。对于切换按钮,请使用gtk.cellRenderToggle。对于其他任何东西,似乎都必须自己实现,从我看到的按钮示例来看,这看起来并不简单 首先,情况是否如此?有没有一种简单的方法来设置你想要用来显示文本的小部件?如果没有,为什么要这样实施?如果我在设计GTK,我只会创建某种类型的系统,其中当添加行和某些数据模型信息更改时,将调用用户指定的回

从我对GTK的理解来看,如果我有一个TreeView,我不能只使用任何小部件来显示有关列的信息。对于文本,您需要一个
gtk.cellRenderText
。对于切换按钮,请使用
gtk.cellRenderToggle
。对于其他任何东西,似乎都必须自己实现,从我看到的按钮示例来看,这看起来并不简单


首先,情况是否如此?有没有一种简单的方法来设置你想要用来显示文本的小部件?如果没有,为什么要这样实施?如果我在设计GTK,我只会创建某种类型的系统,其中当添加行和某些数据模型信息更改时,将调用用户指定的回调,分别添加或更改相应的小部件。

要编写自定义CellRenderer():

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

  • 编写自己的单元格\u渲染器\u获取\u大小 函数并重写父级 对象的函数(通常是父对象 是GtkCellRenderer类型。请注意 你应该遵守标准 填充和单元格的属性 父对象在此对齐

  • 编写自己的单元格\u渲染器\u渲染器 函数并重写父级 对象的函数。此函数 实际渲染

还有pyGTK

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



此设计背后的逻辑是灵活性。TreeViewColumn表示CellRenderer应如何显示数据(来自TreeModel),因此表示布尔型值的TreeViewColumn可以显示为文本(CellRenderText)或复选框(CellRenderToggle)例如,表示整型值的TreeViewColumn可以显示为文本(CellRenderText),也可以显示为进度条(CellRenderProgress),或者可以显示为旋转按钮(CellRenderSpin)或者可以显示为我们想要的任何内容。

您最好在GTK开发人员列表中询问GTK开发人员。