Ich hab das Problem behoben, jetzt kann man einfach weitertippen nach der Autovervollständigung:
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
64
65
66
67
#!/usr/bin/perl
use diagnostics;
use strict;
use warnings;
use Tk;
my $mw = new MainWindow;
$mw->title('Button mit geteiltem Text?');
my $e = $mw->Entry(-text => '',
-width => 80,
)
->pack(
-expand => 1,
-fill => 'x',
);
$mw->bind ('<Tab>', \&vervollstaendige );
$e->focus();
MainLoop();
sub vervollstaendige {
my $text = $e->get();
print $text, "\n";
my @treffer;
my ($pfad, $trenner, $anf) = $text =~ m~^(.*)([/\\])([^/\\]*)$~;
print "pfad='$pfad', Anfang='$anf'\n";
if (! -d $pfad) {
print "'$pfad' ist kein Verzeichnis, Abbruch\n";
}
else {
opendir PFAD, "$pfad/"
or die "Kann Verzeichnis '$pfad' nicht öffnen: $!";
my @verzeichnisse = grep -d "$pfad/$_", readdir PFAD;
closedir PFAD;
for my $v (@verzeichnisse) {
print "Verzeichnis '$v'\n";
if ($v =~ /^\Q$anf/i) { # bei Linux/Unix das i entfernen!
print "Anfang '$anf' passt auf '$v'\n";
push @treffer, $v;
}
}
}
$e->delete(0, 'end');
if (scalar(@treffer) == 1) {
$e->insert('end', "$pfad$trenner$treffer[0]");
}
else {
$e->insert('end', "$pfad$trenner$anf");
}
$e->selectionClear();
$e->icursor('end');
$e->configure(state => 'disable');
$e->configure(state => 'enable');
$e->focus();
} # sub vervollstaendige
\n\n
<!--EDIT|Crian|1061369714-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite