http://qs321.pair.com?node_id=658325


in reply to A dynamic Main Window in GTK2

Add it as you would outside the loop (using a layout, adding it to a vbox or hbox, whatever). The be sure to show it with a show_all on the main window.

Replies are listed 'Best First'.
Re^2: A dynamic Main Window in GTK2
by deadpickle (Pilgrim) on Dec 21, 2007 at 00:53 UTC
    Ok. Here is some sample code.
    #!/usr/bin/perl -w use strict; use Gtk2 '-init'; use Glib qw/TRUE FALSE/; #shared variables my $active_interface: shared; #create dummy main window my $main_window = Gtk2::Window->new('toplevel'); $main_window->signal_connect(delete_event=> sub{Gtk2->main_quit}); my $label = Gtk2::Label->new('TEST '); my $main_table = Gtk2::Table->new(2, 1, FALSE); $main_table->attach_defaults($label, 0, 1, 0, 1); $main_window->add($main_table); $main_window->show_all; &start_up; Gtk2->main; #The start up askng the user what position they are in sub start_up{ #the User interface select window my $start_up = Gtk2::Window->new('toplevel'); #create table my $job_table = Gtk2::Table->new(3, 1, FALSE); #label my $job_label = Gtk2::Label->new(" Select User Interface +"); #Combobox to select user my $job_select = Gtk2::ComboBox->new_text; $job_select->append_text('Spotter'); $job_select->append_text('Tracker'); $job_select->append_text('VC Base'); $job_select->append_text('Met Base'); $job_select->set_active(0); #add the Ok button my $job_button = Gtk2::Button->new('Start'); #add to table $job_table->attach_defaults( $job_label, 0, 1, 0, 1); $job_table->attach_defaults( $job_select, 0, 1, 1, 2); $job_table->attach_defaults( $job_button, 0, 1, 2, 3); #add widgets $start_up->add($job_table); $start_up->show_all; #capture the interface type to use and display in the main window $job_button->signal_connect('button-press-event' => sub { $active_in +terface = $job_select->get_active_text; my $active_interface_label = +Gtk2::Label($active_interface); $main_table->attach_defaults($active_ +interface_label, 0, 1, 1, 2); $start_up->destroy}); }
    and upon running I receive these errors: Use of inherited AUTOLOAD for non-method Gtk2::Label() is deprecated at GRRUVI-v 1.20.pl line 60. *** unhandled exception in callback: *** Can't locate auto/Gtk2/Label.al in @INC (@INC contains: C:/Perl/site/lib C :/Perl/lib .) at GRRUVI-v1.20.pl line 60 *** ignoring at GRRUVI-v1.20.pl line 25. So I guess the question is how do I get this to work? Ant ideas?
      I think your problem is that when you create the Label in the callback you do Gtk2::Label($active_interface); and that should be Gtk2::Label->new($active_interface); (of course, you still need to show_all on the main window)

      HTH, --traveler