use strict; use warnings; use Glib 'TRUE', 'FALSE'; use Gtk3 -init; #new window and box my $window = Gtk3::Window->new ('toplevel'); my $box = Gtk3::Box->new( 'vertical', 0); my $notebook = Gtk3::Notebook->new(); # ----> works : append a new page in the notebook my $n = Gtk3::Label->new('TABNAME'); my $c = Gtk3::Label->new('TABCONTENT'); $notebook->append_page ($c, $n); my $btn = Gtk3::Button->new('Add page'); $btn->signal_connect('clicked' => sub { # ----> same code does nothing when called from a signal callback sub my $n = Gtk3::Label->new('TABNAME'); my $c = Gtk3::Label->new('TABCONTENT'); $notebook->append_page ($c, $n); }); #add and show widgets $box->pack_start($notebook, TRUE, TRUE, 0); $box->add($btn); $box->set_size_request (500, 300); $window->add($box); $window->show_all; Gtk3::main;