Thread [Tk] Refresh Problem
(9 answers)
Opened by a_abels at 2011-11-03 00:14
Hallo zusammen,
ich würde gern einen Label einblenden, welcher immer wieder neu positioniert wird (über die FOR Schleife). Ich bekomme jedoch nur das Endergebnis der Textausgabe angezeigt (in meinem Fall 4mal den Label). Vielleicht muss ich "irgendwo" ein Delay einbauen ($mw->after(1000)), aber das hat nirgendwo geklappt. Ich würde also gern 4mal nacheinander meinen Label eingeblendet sehen, immer an unterschiedlichen Positionen. Hier mein Code: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #!/usr/bin/perl use strict; use warnings; use Tk; our $title = "title"; my $label = "label"; our $mw = MainWindow->new; $mw->title($title); # calculate max windows size my ($max_window_width,$max_window_height)=$mw->maxsize(); our $window_size_x = $max_window_width; our $window_size_y = 45; our $window_position_x = 0; our $window_position_y = 0; my $text_position_x = 0; my $text_position_y = 0; # Mainwindow: sizex/y, positionx/y $mw->geometry($window_size_x."x".$window_size_y."+".$window_position_x."+".$window_position_y); #prevents mw from closing $mw->protocol('WM_DELETE_WINDOW' => sub { Funct(); exit;} ); my $label_length = length($label); my ($pre_label, $post_label, $new_label); for (my $text_position_x = $max_window_width; $text_position_x >=0; $text_position_x = $text_position_x - 400) { # $pre_label = " " x $text_position_x; # $post_label = " " x ($max_window_width-$text_position_x-$label_length); # $new_label = $pre_label.$label.$post_label; $new_label = $label; banner($new_label, $text_position_x, $text_position_y); $mw->after(100); } #automatic close after time $mw->after(3000, sub { $mw->destroy; }); MainLoop; exit; ################################################### ################################################### ################################################### sub banner { my $label = shift; my $text_position_x = shift; my $text_position_y = shift; $mw->Label( -text => $label, -font => "Arial -40 bold") -> place (-x => $text_position_x, -y => $text_position_y); } Vielleicht erkennt einer von Euch direkt das Problem ;) Vielen Dank vorab. mfg André modedit Editiert von GwenDragon: als Perl formatiert; Titel um GUI ergänzt Last edited: 2011-11-03 09:38:18 +0100 (CET) |