在PyGTK TreeView中加粗/取消加粗行

5 投票
1 回答
1522 浏览
提问于 2025-04-17 08:18

我想在我的树形视图(TreeView)中让一些行变成粗体,而有些行则保持正常。之后,我还想在点击时取消粗体效果。

有什么简单的方法可以做到这一点吗?

1 个回答

7

我假设你有一个模型,这个模型里有一列是一些文本,并且有一个 gtk.CellRendererText 组件,它的 text 属性是设置为模型中那一列的索引。

如果你在这个模型中添加一个新列,你可以用它来设置每个单元格渲染器的字体粗细。只需要把 gtk.CellRendererText 组件的 weight 属性设置为模型中新列的索引,并把 weight-set 设置为 True

之后,你只需要在模型中使用任何 pango.WEIGHT 常量来设置字体粗细,比如 pango.WEIGHT_NORMALpango.WEIGHT_BOLD

举个例子,假设你的模型列是这样的(一个是文本,另一个是字体粗细):

Model columns

然后你为测试添加了几行数据:

Model rows

(注意 pango.WEIGHT_NORMAL=400pango.WEIGHT_BOLD=700

有了这个模型,你可以创建一个 gtk.TreeView,里面有一列和一个文本渲染器:

Treeview hierarchy

在渲染器中,你把 text 属性设置为模型中的 text 列:

Cell renderer text

然后把 weight 属性设置为模型中的 weight 列:

Cell renderer weight

最后,你用测试数据得到的结果是:

Final result

在这里你可以看到,文本是按照模型中设置的字体粗细显示的。

撰写回答