Thread Entry & Scale via -textvariable: Problem... (15 answers)
Opened by pktm at 2005-08-12 05:16

pktm
 2005-08-13 01:40
#44354 #44354
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ok,nachdem ich meiner Frustration durch das Verschlingen eines Dönsers Luft gemacht hatte habe ich nochmal ganz klein angefangen (sieht nur nach viel aus):
Code: (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
#!/Perl/bin/perl

use strict;
use warnings;
use Tk;
use Tk::Scale;
use Tk::Balloon;
use Tk::NumEntryPlain;
use Tk::EntryCheck;
use Tk::NumEntry;

my $mw = Tk::MainWindow->new(-width=>150,-height=>150,);
$mw->gridPropagate(0);
$mw->packPropagate(0);

my $wert = 10;

my $e = $mw->NumEntry(
-minvalue => 0,
-maxvalue => 100,
);

my $s = $mw->Scale(
-from => 0,
-to => 100,
-orient => 'horizontal',
);

my $l = $mw->Label(-textvariable=>\$wert,);

$e->configure(
-validate => 'key',
-vcmd => sub{ setScale($e, $s, $wert); },
);

$e->pack();
$s->pack();
$l->pack();

Tk::MainLoop;

sub setScale {
my ($e, $s, $wert) = @_;
my $zw = $e->get();
if( $zw =~ m/.{0,0}/ ){
print "Feld leer ($zw)!\n";
}
}


Dieser (vollständige) Code erzeigt ein kleines Fenster mit einem NumEntry, Einer Scale (die noch nicht benutzt wird) und einem Label zum Anzeigen der $wert-Variable.

Wenn ich jetzt über die Option -validate=>'key' Änderungen am Inhalt des Entry-Feldedes mit der Tastatur überwache erhalte ich seltsamerweise folgende Ausgabe:
Quote
Feld leer (100)!
Feld leer ()!


Mit der Tatsache, dass der Feldinhalt nur überprüft wird wenn man Enter drückt kann ich mich ja noch abfinden, aber ich verstehe nicht, warum da steht, dass mein Feld keinen Inhalt hätte obwohl vorher der Inhalt von 100 bestätigt wird unmd auch 100 drin steht.

Mir ist dieses Verhalten sehr suspekt.
Ich habe beschlossen meinem Programm die Möglichkeit die Zahl einzutippen zu nehmen, das Entry-Widget auf readonly zu setzen und statt dessen die Buttons von NumEntry in Verbindung mit der Scale zur Verfügung zu stellen.

Nichtsdestotrotz wäre es doch sinnvoll, wenn es einen Weg gäbe Änderungen an einem Widget zu überwachen.
Kann mir jemand gute Links zu bind und dergleichen schicken (perldoc bin ich bereits am welzen - harter Stoff für jemanden der schlecht Englisch kann)?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Entry & Scale via -textvariable: Problem...