【发布时间】:2018-04-14 21:47:12
【问题描述】:
我想显示一行的状态已读或未读,方法是将(行中的一列的)文本设为粗体或不是。
行的状态(或模型中的数据)可以是模型的一部分或其他地方。在这一点上我很灵活。
如何根据基础(动态)数据(在本例中为值1)使特定单元格的文本变为粗体?
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class View(Gtk.TreeView):
def __init__(self, model):
Gtk.TreeView.__init__(self, model)
col = Gtk.TreeViewColumn('Text',
Gtk.CellRendererText(),
text=0)
self.append_column(col)
# bold text
# Gtk.CellRendererText(weight_set=True, weight=700),
class Model(Gtk.ListStore):
def __init__(self):
Gtk.ListStore.__init__(self, str, int)
self.append(['foo 1', 0])
self.append(['foo 2', 1]) # bold
self.append(['foo 3', 0])
self.append(['foo 4', 0])
self.append(['foo 5', 1]) # bold
class Window(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.set_default_size(100, 200)
# model & view
self.model = Model()
self.view = View(self.model)
# layout
self.layout = Gtk.Grid()
self.add(self.layout)
self.layout.attach(self.view, 0, 0, 1, 2)
self.connect('destroy', Gtk.main_quit)
self.show_all()
if __name__ == '__main__':
win = Window()
Gtk.main()
【问题讨论】:
-
您是在问如何使文本变粗吗?
-
@Azsgy 这是问题的一部分。我不想让所有行都加粗 - 只有其中一些行,具体取决于那里的数据。
-
好问题,顺便说一句,我花了一段时间才弄清楚。今天也学到了一些东西。
标签: python python-3.x gtk3 pygobject