2

以下のモックアップに示すように、背景画像付きの GTK TreeView が必要です。

ウィジェットの背景色を設定する方法は見つかりましたが、背景pixbufやその他の画像形式を設定する方法はないようです。

私は PyGTK で Python を使用していますが、GTK バインディングを使用する任意の言語での回答は受け入れられます。

背景画像付きの gtkTreeView のモックアップ:

背景画像付きの GTK TreeView のモックアップ

最初の試み

Jong Bor のアドバイスに基づいて、次のことを試しました。

style = treeview.get_style().copy()
img_pixbuf = gtk.gdk.pixbuf_new_from_file(image_filename)
img_pixmap = img_pixbuf.render_pixmap_and_mask()[0]
for state in (gtk.STATE_NORMAL, gtk.STATE_ACTIVE, gtk.STATE_PRELIGHT,
              gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE):
    style.bg_pixmap[state] = img_pixmap
treeview.set_style(style)

最初はこれは何の効果もないように見えましたが、アイテムを選択するとTreeView、次のことがわかりました。

背景画像の一部を示す選択された行

行を選択すると、背景の一部が透けて見えます。

(テスト目的で、青色を除いて、モックアップに基づいた背景画像を使用していることに注意してください)。

次に、TreeView の内容をクリアして再描画する GUI の一部をアクティブにし、次のことを観察しました。

タイル張りの背景が見える

ただし、 TreeView に何かを追加するとすぐに背景が消えるため、これが正しい方向に進んでいるかどうかはまだわかりません。

4

2 に答える 2

0

各セルにはその外観を制御するレンダラーがあるため、ツリービューのセルをセルごとに変更する必要があると思います。

とにかく、次のコードは試してみる価値があるかもしれません (テストされていない不完全なコード):

# Get the treeview's style
style = treeview.get_style().copy()

# Change the bg_pixmap attribute
#   It's an array with one pixbuf for every widget state, so
#   you probably want to replace each of the default 
#   pixmap's with your own image(s)
#   

style.bg_pixmap[0] = your_pixmap
style.bg_pixmap[1] = your_pixmap
style.bg_pixmap[2] = your_pixmap
style.bg_pixmap[3] = your_pixmap
style.bg_pixmap[4] = your_pixmap

# Set the modified style
treeview.set_style(style)

bg_pixmap 属性はPyGTK リファレンスに記載されています。

配列の位置がウィジェットの状態にどのようにマップされるかはわかりません。C++ と同じ場合は、次のようになります。

0 - STATE_NORMAL    
1 - STATE_ACTIVE    
2 - STATE_PRELIGHT  
3 - STATE_SELECTED  
4 - STATE_INSENSITIVE   
于 2011-03-21T21:48:58.373 に答える