The power of TK
Voraussetzung:
ein HoH unbekannter Natur.
Ziel:
den gesammten HoH darstellen uind jedes Fekd editieren können und das zurück in den Hash schreiben
Das Bsp.
Legt mri alle Label und Entryfelder and so das man sogar die HoH Struktur lesen kann
Problem;
1 die momentane Darstellungs form ist ncht zwingend die beste.
2, das zu rückschreiben in den hash weiß ich so garnihc wie ich das machen soll ( hab mir "validatecommand" angeschaut konnt demit aber nix anfangen )
3. das mit den scrollbalken tut nich fuer Frames.
Ideen:
gibt es eine Möglichkeit Variabelm an Entrifelder zu binden ?
Hoffung:
das Ihr alles aber auch alles was man im bezug auf Tk etc verbessern kann aufzeigt
Wunsch:
keine perldoc -f xxx Antworten
THX FtR
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
use Tk;
use Data::Dumper;
$hash{'KEY'}="VALUE";
$hash{'SUBKEY1'}{'KEY1'}="VALUE";
$hash{'SUBKEY1'}{'KEY2'}="VALUE";
$hash{'SUBKEY1'}{'KEY3'}="VALUE";
$hash{'SUBKEY1'}{'KEY4'}="VALUE";
$hash{'SUBKEY1'}{'SUBSUBKEY1'}{'KEY1'}="VALUE";
$hash{'SUBKEY1'}{'SUBSUBKEY1'}{'KEY2'}="VALUE";
$hash{'SUBKEY1'}{'SUBSUBKEY1'}{'KEY3'}="VALUE";
$hash{'SUBKEY1'}{'SUBSUBKEY1'}{'KEY4'}="VALUE";
$hash{'SUBKEY1'}{'SUBSUBKEY2'}{'KEY4'}="VALUE";
$hash{'SUBKEY1'}{'SUBSUBKEY3'}{'KEY4'}="VALUE";
$hash{'SUBKEY1'}{'SUBSUBKEY4'}{'KEY4'}="VALUE";
$hash{'SUBKEY2'}{'KEY1'}="VALUE";
$hash{'SUBKEY2'}{'KEY2'}="VALUE";
$hash{'SUBKEY2'}{'KEY3'}="VALUE";
$hash{'SUBKEY2'}{'KEY4'}="VALUE";
print Dumper(\%hash);
$top = new MainWindow;
$top->minsize( qw(300 300));
$men = $top->Frame( )->pack(-side=>"top",-fill=>"x");
$men->Button(-text=>"Dump",-command=>\&dumper)->pack();
test(\%hash);
MainLoop();
sub dumper{
print Dumper(\%hash);
}
sub test{
my $fr = $men->Frame(-relief=>"ridge",-borderwidth=>"2")->pack(-side=>"top",-anchor=>"w",-padx=>"10");
out(\%hash,$fr);
}
sub out{
# print "OUT\n";
my $ref = shift;
my $parent = shift;
my $top = $parent->Frame()->pack(-side=>"top",-padx=>"10",-padx=>"4");
my $left = $top->Frame()->pack(-side=>"left",-padx=>"10",-padx=>"4");
my $mid = $top->Frame()->pack(-side=>"left",-padx=>"10",-padx=>"4");
foreach$key ( sort keys %{$ref}){
my $fr = $parent->Frame(-relief=>"ridge",-borderwidth=>"2")->pack(-side=>"top",-anchor=>"w",-padx=>"10");
if (ref $ref->{$key}eq "HASH"){
$fr->Label(-text=>$key)->pack(-side=>"top",-anchor=>"w");
out($ref->{$key},$fr);
}
if(!ref($ref->{$key}) ) {
$left->Label(-text=>$key)->pack(-side=>"top",-anchor=>"w");
$mid->Entry(-text=>$ref->{$key}, -validatecommand=>\&val,-validate=>"focus")->pack();
}
}
}
\n\n
<!--EDIT|FtR|1091911116-->
print&f(($_=(3x3)."3+33")=~s=3(?![^3]|$)=&f=eg);
sub f{eval(@_?$_:"'$&+'x3");}