2
我想在我的TreeView中顯示包含一些圖標的組合框。所以我創建了一個ListStore來保存數據。PyGtk CellRendererCombo使用Pixbuf
# Initialize a list store for the combobox.
priorityModel = Gtk.ListStore(GObject.TYPE_INT, GdkPixbuf.Pixbuf)
priorityModel.append([0, self.loadPixbuf('./data/media/flag_blue.png')])
priorityModel.append([1, self.loadPixbuf('./data/media/flag_green.png')])
priorityModel.append([2, self.loadPixbuf('./data/media/flag_yellow.png')])
priorityModel.append([3, self.loadPixbuf('./data/media/flag_red.png')])
然後我創建了Gtk.CellRendererCombo對象,並將上面的Gtk.ListStore指定爲模型。
# Setup the priority cell renderer, ...
self.priorityRenderer = Gtk.CellRendererCombo()
self.priorityRenderer.set_property('editable', True)
self.priorityRenderer.set_property("model", priorityModel)
self.priorityRenderer.connect("edited", self.on_priority_changed, self.listStore, 3)
最後,我創建了一個新Gtk.TreeViewColumn和分配的CellRenderer並把它添加到TreeView。
# ... setup the priority column ...
self.colPriority = Gtk.TreeViewColumn("Priority", self.priorityRenderer, text=3)
# ... and add it to the treeview.
self.append_column(self.colPriority)
所有的不錯,但我怎麼能顯示pixbuf的圖標,而不是整數,我如何初始化使用整數組合框?第二個問題是,當組合框未處於活動狀態時,是否可以只顯示圖標,並在值更改時顯示圖標和某些文本(組合框活動)?