Hallo!
Habe wieder mal so ein Problem...
Ich will Daten abfragen (alias, user, kennwort), dafür habe ich ein Fenster mit 3 Eingabefelder gemacht, die werden auch richtig zurückgegeben - Wenn die entsprechende Subroutine direkt aufgerufen wird, also der Teil der im Kode ganz oben auskommentiert ist
Wenn aber ich ein Dialog dazwischenschalte (es muss erstmal bestätigt werden, dass das nächste fenster angezeigt werden soll), wird der Teil in eingabe() nach MainLoop nicht mehr ausgeführt...
Ehm... ja. Vielleicht überdeckt das MainLoop vom Dialog... das von meinem Eingabefenster... oder... keine Ahnung. Wäre sehr dankbar für jede Hilfe.
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
dialog($titel, $text);
#my @daten = eingabe();
#for(@daten){print $_};
sub dialog {
my @daten;
my $titel = shift;
my $text = shift;
my $mw = tkinit();
my $dialog = $mw->Dialog(-title => $titel,-text => $text, -bitmap => 'info', -font=>'courier 8', -buttons => ['Ja, jetzt', 'Später', 'Nein']);
$dialog->iconimage($bild);
$dialog-> transient('');
$mw->withdraw();
my $answer = $dialog->Show();
if($answer eq "Ja, jetzt"){
@daten = eingabe();
for(@daten){
print $_;
}
}
elsif ($answer eq "Später"){
}
#nein
else {
}
$dialog->destroy();
}
sub eingabe {
my @daten;
my $text = "Bitte geben Sie die Daten ein, die Ihnen vom * zugeteilt wurden.\n".
"(Beim Alias geht es um den Teil vor dem @,)";
my $mw = tkinit(-title=> '*');
my $fenster = $mw -> Frame(-padx=>"3m", -pady=>"3m") -> pack();
my $but_frame = $fenster->Component('Frame' => 'but_frame')->pack(-side=>'bottom');
my $ok_but = $but_frame -> Button(-text=>" Senden ", -command => sub{@daten = ok($mw, $fenster);}) -> pack(-side=>'left', -expand=>1);
my $sep_frame = $but_frame -> Frame(-width=>20) -> pack(-side=>'left', -expand=>1);
my $ab_but = $but_frame -> Button(-text=>" Abbrechen ", -command => sub{abbrechen($mw);}) -> pack(-side=>'right',-expand=>1);
my $lab_frame = $fenster -> Component('Frame' => 'lab_frame')->pack(-expand => 1, -fill => 'both', -side=>'left');
$lab_frame -> Label(-text => ' Alias:')->pack(-anchor => 'w', -anchor => 'center');
$lab_frame -> Label(-text=>' Username:')->pack(-anchor=>'w', -anchor => 'center');
$lab_frame -> Label(-text=>' Kennwort:')->pack(-anchor=>'w', -anchor => 'center');
my $alias_var = '';
my $user_var = '';
my $password_var = '';
my $dat_frame = $fenster -> Component ('Frame' => 'dat_frame')->pack(-expand=>1, -fill => 'both', -side=>'left');
my $alias = $dat_frame -> Component ('Entry' => 'alias', -textvariable => \$alias_var)->pack(-anchor => 'center');
$alias->focus();
my $user = $dat_frame -> Component ('Entry' => 'user', -textvariable => \$user_var)->pack(-anchor => 'center');
my $entry = $dat_frame ->Component('Entry' => 'password', -textvariable => \$password_var, -show => '*')->pack(-anchor => 'center');
$alias->bind('<Return>', sub{$user->focus();});
$user->bind('<Return>', sub{$entry->focus();});
$entry->bind('<Return>', sub{@daten = ok($mw, $fenster);});
MainLoop;
print "dies wird nicht angezeigt";
return @daten;
sub ok {
my $mw = shift;
my $fenster = shift;
my $alias = $fenster->Subwidget('dat_frame')->Subwidget('alias')->get();
my $user = $fenster->Subwidget('dat_frame')->Subwidget('user')->get();
my $pass = $fenster->Subwidget('dat_frame')->Subwidget('password')->get();
$mw -> destroy();
return ($alias, $user, $pass);
}
}