1 2 3 4 5
$Spinbox_Std->bind ('<FocusOut>', sub{ if ( $Spinbox_Std->get() =~ /\D/ || $Spinbox_Std->get() > 23 ) { $Spinbox_Std->delete(0, 'end'); $Spinbox_Std->insert('end', '23'); } } );
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
#perl
use strict;
use warnings;
use utf8;
use Tk;
use Tk::Spinbox;
use Data::Dumper qw/Dumper/;
my $mw = tkinit();
my $sb = $mw->Spinbox(
-text => 1,
-validate => 'all',
-validatecommand => sub{
my $input = shift;
print "Eingabe = '$input'\n";
if( $input !~ m/^\d+$/ || $input < 0 || $input > 23 ) {
return 0;
}
return 1;
},
-invalidcommand => sub{
print "Falsche Engabe, muss Ganzzahl zwischen 0 und 23 sein (24 gibt es nicht :-p)\n";
}
)->pack();
$mw->Button(
-text => 'exit',
-command => sub{
print "Inhalt der Spinbox: '" . $sb->get() . "'\n";
}
)->pack();
$mw->MainLoop();
2011-09-28T08:20:39 KeanWas mir aber in diesem Zusammenhang wieder mal auffällt ist, dass man bei einem Entry nicht den Inhalt markieren und überschreiben kann.
Gibt es dafür eine Lösung?
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
#perl
use strict;
use warnings;
use utf8;
use Tk;
use Tk::Spinbox;
use Data::Dumper qw/Dumper/;
my $mw = tkinit();
my $sb = $mw->Spinbox(
-text => 1,
-validate => 'all',
);
$sb->configure(
-validatecommand => [sub{
my $spinbox = shift;
print "validatecmd:\n";
print Dumper \@_;
my $input = shift;
print "Eingabe = '$input'\n";
if( $input !~ m/^\d+$/ || $input < 0 || $input > 23 ) {
return 0;
}
return 1;
}, $sb],
-invalidcommand => sub{
print "invalidcmd:\n";
print Dumper \@_;
print "Falsche Engabe, muss Ganzzahl zwischen 0 und 23 sein (24 gibt es nicht :-p)\n";
}
);
$sb->pack();
$mw->Button(
-text => 'exit',
-command => sub{
print "Inhalt der Spinbox: '" . $sb->get() . "'\n";
}
)->pack();
$mw->MainLoop();
2011-09-28T09:59:08 pktmDu kannst sie als Argument übergeben:
Code: (dl )1
2
3
4
5
6
7
8
9
10my $sb = $mw->Spinbox(
-text => 1,
-validate => 'all',
);
$sb->configure(
-validatecommand => [sub{
my $spinbox = shift;
..............
}, $sb],
);