如何在Gtk2 :: TreeView Perl中设置行的颜色?

时间:2012-12-24 23:33:11

标签: perl gtk gtk2 gtktreeview

我使用TreeView和ListStore来显示GUI表。如何将颜色设置为已定义的行?有样品怎么做?谷歌我发现只有SimpleList的例子,但我需要它用于ListStore。

1 个答案:

答案 0 :(得分:1)

有两种方法可以在TreeView上设置颜色。 首先是: 设置要保留颜色的列,然后使用TreeViewColumn“set_attributes”的方法设置单元格渲染器的颜色。

my $list_store = Gtk2::ListStore("Glib::String", "Glib::String"); # keep one note and color
my $tree_view = Gtk2::TreeView->new($list_store);
my $col = Gtk2::TreeViewColumn->new;
my $rend = Gtk2::CellRendererText->new;
$col->pack_start($rend, TRUE);
$col->set_attributes($rend,'text' => $i++, 'background' => 1,);
$tree_view->append_column($col);

第二种方式是: 不要使用额外的列来保留颜色,而是使用TreeViewColumn的方法set_cell_data_func:

$col->set_cell_data_func($rend, sub {
    my ($column, $cell, $model, $iter) = @_;        
    if ($model->get($iter, 0) eq 'Good') {  
        print "Red\n";
        $cell->set('background' => 'red');
    } else {
        $cell->set('background' => 'white');
    }
});