Thread Daten werden an Dialog nicht zurückgegeben? (4 answers)
Opened by theresa at 2008-01-17 12:33

theresa
 2008-01-17 12:33
#104821 #104821
User since
2007-07-17
90 Artikel
BenutzerIn
[default_avatar]
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
Code: (dl )
my @daten = eingabe();


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.

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
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);
}
}

View full thread Daten werden an Dialog nicht zurückgegeben?