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

GUIfreund
 2011-11-07 12:42
#153976 #153976
User since
2011-08-08
559 Artikel
BenutzerIn
[default_avatar]
2011-11-07T10:31:03 a_abels
Jetzt habe noch ein Problem: mit $mw->Label(-fg=> $fgcolor, -bg => $bgcolor, -text => $label, -font => $fonts) setze ich ja nur die Hitergrundfarbe dort, wo der Text langläuft. Wie bekomme ich denn den kompletten Hintergrund des Fensters in eine bestimmte Farbe?

Damit das Fenster die gewünschte Hintergrundfarbe hat, musst du natürlich die Hintergrundfarbe des Fensters auf diese Farbe setzen:
Code (perl): (dl )
my $mw = MainWindow->new(-bg => $bgcolor);

2011-11-07T10:31:03 a_abels
Ihr seid echt gut, Leute ;)

... was dich hoffentlich nicht davon abhält, dir auch die Ratschläge anzusehen, die du neben der Antwort auf deine konkrete Frage noch mit bekommst. Hier noch ein paar Anmerkungen zu deinem Programm:

Es ist verdammt schlechter Programmierstil, eine zählende For-Schleife als unendliche Schleife zu missbrauchen. Lasse die For-Schleife zum normalen Ende kommen und packe sie in eine unendliche Schleife. Unendliche Schleifen schreibt man üblicherweise so:
Code (perl): (dl )
1
2
3
while (1) {
    .....
}

Die While-Schleife brauchst du freilich nicht, wenn du
Code (perl): (dl )
$mw->repeat(millisecs, callback);
benutzt, wie in meiner letzten Antwort empfohlen.

Verwende Einrückungen bei deinen Blöcken. Das verbessert die Lesbarkeit deutlich.

Und nicht zuletzt: Die Abbruchbedingung
Code (perl): (dl )
1
2
#automatic close after time
$mw->after(3000, sub { $mw->destroy; });

gehört natürlich vor die Schleife, nicht dahinter.
Gruß
GUIfreund

View full thread [Tk] Refresh Problem