2013-01-04 21 views
3

我正在研究如何在Python(2.7或更高版本)中創建具有IconView文本元素的自定義CellRendererText的GtkIconView。我如何使用自定義CellRendererText創建Gtk Iconview

原因是我需要在創建iconview期間重寫某些屬性。

環顧四周,我發現這個例子的PyGTK爲的TreeView - 類似的,但我需要一個圖標型控件

我已經看過了C++文檔內省的例子,但我真的不瞭解如何將一個cellrenderertext分配給IconView。

我又發現了一些Python文檔創建自定義CellRenderer的樹狀

任何人都可以點我在正確的方向如何修改IconView的示例

回答

1

Gtk.IconView繼承自Gtk.CellLayout,因此您可以使用單元佈局函數來替換當前的文本渲染器。一些事情的脈絡:

renderers = iconview.get_cells() 
iconview.clear() 
for r in renderers: 
    if not isinstance(r, Gtk.TextRenderer): 
     iconview.pack_start(r) 
    else: 
     iconview.pack_start(my_custom_renderer) 

我不知道這是否有效,但這就是我如何去做。

1

官方的辦法是使用set_cell_data_func

但是,在IconView的上下文中,它與TreeView大小寫(僅將自定義渲染函數傳遞給TreeViewColumn實例)完全不同。

這讓我感到困惑,直到我在GTK3 Ruby綁定中找到this nugget,其中Kouhei Sutou演示瞭如何使用GtkCellLayout接口在IconView中設置單元格渲染器。

注意:如果您以前使用制定者suchs爲iconView.text_column = TEXT_IDX不得不設置你的專欄,那麼你應該一旦你對自定義渲染到位刪除它們,否則你會看到重複的文字標籤。

相關問題