#!/usr/bin/perl use strict; use warnings; use Glib qw/TRUE FALSE/; use Gtk2 '-init'; use utf8; ###Erzeugt eine tree_view sub make_tree() { my $tree_store = Gtk2::TreeStore->new("Glib::String"); ###Erzeuge mehrere Einträge mit drei Parents und jeweils 5 Childs foreach (1..3) { my $parent = $tree_store->append(undef); $tree_store->set($parent, 0, $_); foreach (1..5) { my $child = $tree_store->append($parent); my $zahl = int(rand(100)); $tree_store->set($child, 0, "CHILD: $zahl"); } } my $tree_view = Gtk2::TreeView->new($tree_store); my $tree_column = Gtk2::TreeViewColumn->new(); $tree_column->set_title("Value"); $tree_column->set_sort_column_id(0); my $renderer = Gtk2::CellRendererText->new(); $tree_column->pack_start($renderer, FALSE); $tree_column->add_attribute($renderer, text => 0); $tree_view->append_column($tree_column); return $tree_view; } ###Initiales erzeugen der Ansicht my $window = Gtk2::Window->new('toplevel'); my $vbox = Gtk2::VBox->new(); my $button = Gtk2::Button->new("Refresh"); my $tree_view = make_tree(); $vbox->pack_start($tree_view, FALSE, FALSE, 0); $vbox->pack_start($button, FALSE, FALSE, 0); $window->add($vbox); $window->show_all(); ###Erzeuge einen Button zum Refreshen $button->signal_connect(clicked => sub{ Gtk2->main_iteration while Gtk2->events_pending; $vbox->remove($tree_view); $tree_view = make_tree(); $vbox->pack_start($tree_view, FALSE, FALSE, 0); $vbox->show_all(); }); ###Erzeuge einen Timer der autoamtisch refreshes macht (sofern es funktioniert ca. 5min rythmus) my $timer = Glib::Timeout->add(3000, sub{ Gtk2->main_iteration while Gtk2->events_pending; $vbox->remove($tree_view); $tree_view = make_tree(); $vbox->pack_start($tree_view, FALSE, FALSE, 0); $vbox->show_all(); }); Gtk2->main();