さくです。

ruby-1.4.0+ruby-gtk-0.21でGtk::Treeを使う練習をしてみました。

以下のコードで期待どおり

[+]root

開くと

[-]root
 |-subitem 1
 |-subitem 2
 +-subitem 3

というツリーができるのですが、rootにPixmapを付けようと、#-〜#-のかわりに
#+〜#+のコードにおきかえると、[+]がなく、rootを開くことができなくなって
しまいました。
# subtree.showというコードを加えると、展開された状態にはなります。

window.realizeのせいのような気はしますが、使わないわけにもいきませんし。
どうするのが正しいのでしょう。

#!/usr/bin/ruby

require 'gtk'

window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL)
window.set_usize(200, 200)

subtree = Gtk::Tree.new
1.upto(3) do |name|
  item = Gtk::TreeItem.new("subitem #{name}")
  item.show
  subtree.append(item)
end

root = Gtk::Tree.new
#-
item = Gtk::TreeItem.new('root')
#-
#+
#item = Gtk::TreeItem.new
#window.realize
#pix, mask = Gdk::Pixmap.create_from_xpm(window.window, nil, 'test.xpm')
#pm = Gtk::Pixmap.new(pix, mask)
#label = Gtk::Label.new('root')
#hbox = Gtk::HBox.new(false, 0)
#hbox.pack_start(pm, false ,false, 0)
#hbox.pack_start(label, false, false, 0)
#pm.show
#label.show
#hbox.show
#item.add(hbox)
#+
item.show
root.append(item)
item.set_subtree subtree

root.show

window.add(root)
window.show
Gtk.main

-- 
OZAWA Sakuro
<mailto:crouton / duelists.org>
<http://www.duelists.org/~crouton/>