4
我有一個PyGtk樹視圖與幾列。在運行期間,我不斷添加新行。每個單元包含一個字符串。通常,我會爲每行使用gtk.CellRenderer
,但我想根據單元格內的值設置每個單元的背景顏色。如何在pygtk樹視圖中設置單個單元格的顏色?
我嘗試了幾個解決方案,但似乎我必須爲每個單元創建一個CellRenderer
,設置文本屬性和背景顏色。這看起來有點過大,所以我問自己是否有更好的解決方案。有什麼建議麼?
我有一個PyGtk樹視圖與幾列。在運行期間,我不斷添加新行。每個單元包含一個字符串。通常,我會爲每行使用gtk.CellRenderer
,但我想根據單元格內的值設置每個單元的背景顏色。如何在pygtk樹視圖中設置單個單元格的顏色?
我嘗試了幾個解決方案,但似乎我必須爲每個單元創建一個CellRenderer
,設置文本屬性和背景顏色。這看起來有點過大,所以我問自己是否有更好的解決方案。有什麼建議麼?
您可以在treeview數據源的額外字段中定義樹視圖單元格的背景和前景。然後爲樹視圖列設置前景和背景屬性,以從相應的數據源字段獲取它們的值。
下面是一個小例子:
import gtk
test_data = [
{ 'column0' : 'test00', 'column1' : 'test01', 'f': '#000000', 'b': '#FF00FF' },
{ 'column0' : 'test10', 'column1' : 'test11', 'f': '#FF0000', 'b': '#C9C9C9' },
{ 'column0' : 'test20', 'column1' : 'test21', 'f': '#00FF00', 'b': '#FF0000' }]
class TestWindow(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
# create list storage
store = gtk.ListStore(str, str, str, str)
for i in test_data:
store.append([i['column0'], i['column1'], i['f'], i['b']])
treeview = gtk.TreeView(store)
# define columns
column0 = gtk.TreeViewColumn("Column 0", gtk.CellRendererText(), text=1, foreground=2, background=3)
treeview.append_column(column0)
column1 = gtk.TreeViewColumn("Column 1", gtk.CellRendererText(), text=1, foreground=2, background=3)
treeview.append_column(column1)
self.connect("destroy", lambda w: gtk.main_quit())
self.connect("delete_event", lambda w, e: gtk.main_quit())
self.add(treeview)
self.show_all()
if __name__ == "__main__":
TestWindow()
gtk.main()
希望這會有所幫助,至於
的感謝!我希望有一個解決方案將數據從控制數據中完全分離出來,但究竟是什麼......這足夠好用 – Fookatchu 2011-03-04 17:11:10
+1它確實有很大的幫助。謝謝。 – Sardathrion 2011-12-09 15:03:03