#!/usr/bin/perl use strict; use warnings; use Tk; #use Tk::Label; use POSIX; my $red; my $green; my $blue; my $mw = MainWindow->new(-bg=>'papayawhip'); $mw->geometry('300x100'); # x amount then y amount $mw->title('Raw Renamer'); #$mw->waitVisibility; #sometimes need this to see the mw while its loading; # A frame for labels on the left hand size my $left_frame = $mw->Frame (-label=>'$left_frame', -borderwidth => 2, -relief => 'groove', -bg=>'goldenrod') ->pack(-side => 'left', -anchor => 'n', -expand => 1, -ipadx=>'20', -ipady=>'20' ); $mw->update; sleep 1; # $text_label is a Label, but you are using it as a Frame; my $text_label = $left_frame->Label(-text=>'this one gets overwritten', -bg=>'darkmagenta', -fg=>'thistle')->pack(-side => 'left', # Why this ? -anchor => 'n', -expand => 1, -ipadx=>'10', -ipady=>'10' ); $mw->update; sleep 4; my $redl = $text_label->Label(-text =>"Red", -bg=>'firebrick', -fg=>'blanchedalmond') #; and warn "im not supposed to be used as a frame, but you did this now, so here you go"; $redl->pack( -side => 'top', -anchor => 'w') #; or warn "i have not packed cause im err"; $text_label->Label(-text =>"Green", -bg => 'darkolivegreen' )->pack(-side => 'top', -anchor => 'w'); $text_label->Label(-text =>"Blue", -bg => 'deepskyblue' )->pack( -side => 'top', -anchor => 'w'); # Another frame for the ($red $green $blue) variables my $variable_frame = $mw->Frame (-label=>'varibable_frame', -borderwidth => 4, -relief => 'groove', -bg => 'lightsalmon') ->pack(-side => 'left', -anchor => 'n', -expand => 1); my $red_label = $variable_frame->Label(-textvariable =>\$red, -fg=>'brown') ->pack(-side => 'top'); my $green_label = $variable_frame->Label(-textvariable =>\$green, -fg=>'green')->pack(-side => 'top'); my $blue_label = $variable_frame->Label(-textvariable =>\$blue, -fg=>'blue') ->pack(-side => 'top'); #$mw->waitVisibility; # Intialize(); # How is this infinite loop bypassed ? my $debug_frame = $mw->Frame(-label=>'debug_frame')->pack( -side=>'top', -anchor=>'n', -fill=>'x' ); my @debug_Tk_objects = ( qw/db_text_frame db_text_label db_variable_frame/ ); my %db_labels; map{ $db_labels{$_} = $debug_frame->Label(-text=> $_ ) } @debug_Tk_objects; map { $db_labels{$_}->pack(-side=>'top', ) } sort keys %db_labels; sub update_db_labels{ map{ $db_labels{$_}->configure( -text => join ' ', "$_:", $db_labels{$_}, ) } @debug_Tk_objects; } Intialize(); MainLoop; sub Intialize { # use Diagnostics; #no hints here so its all running accordianly # $SIG{INT} = sub{ die 'SIG{INT}' }; #force death with no cleanup ? # interesting once this has been called once, ctrl C interupts halt the program # even when commented out in subsequent runs print "Str"; while(1) { print "."; $red = floor(50*rand()); $red_label->update; $green = floor(50*rand()+50); $green_label->update; $blue = floor(50*rand()+100); $blue_label->update; update_db_labels; #$mw->update; # sleep 1; select( ${\undef}, ${\()}, undef, (12/6) ); ; } }