Thread [Tk] Refresh Problem (9 answers)
Opened by a_abels at 2011-11-03 00:14

a_abels
 2011-11-03 00:14
#153779 #153779
User since
2010-07-11
90 Artikel
BenutzerIn
[default_avatar]
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)

View full thread [Tk] Refresh Problem