#!/usr/bin/ruby require 'gtk2' Thread.abort_on_exception = true Gtk.init tv = Gtk::TreeView.new renderer = Gtk::CellRendererText.new column = Gtk::TreeViewColumn.new('', renderer, { :text => 0 }) tv.append_column(column) tv.set_headers_visible(false) ts = Gtk::TreeStore.new(String, String) tv.set_model(ts) iter_parent1 = ts.append(nil) iter_parent1[0] = 'parent1' iter_child1 = ts.append(iter_parent1) iter_child1[0] = 'child1' iter_parent2 = ts.append(nil) iter_parent2[0] = 'parent2' iter_child2 = ts.append(iter_parent2) iter_child2[0] = 'child2' iter_child3 = ts.append(iter_parent2) iter_child3[0] = 'child3' tv.expand_all vb = Gtk::VBox.new vb.add(tv) vb.add(b = Gtk::Button.new('do')) b.signal_connect('clicked') { ts.remove(ts.get_iter('0:0')) } main_window = Gtk::Window.new main_window.add(vb) main_window.signal_connect('delete-event') { Gtk.main_quit } main_window.show_all Gtk.main