Schrift
[thread]11298[/thread]

Dialog aus Dialog anzeigen

Leser: 1


<< >> 7 Einträge, 1 Seite
theresa
 2008-02-14 14:15
#105886 #105886
User since
2007-07-17
90 Artikel
BenutzerIn
[default_avatar]
Hi,
ich möchte ein Dialog aus einem anderen Dialog erzeugen. Der Kode dafür:

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
my $mw = tkinit();
my $titel = "titel";
my $text = "text";
my $dialog = $mw->Dialog(-title => $titel,-text => $text, -bitmap => 'info', -font=>'courier 8', -buttons => ['Jetzt', 'Später', 'Nie']);

#$dialog -> protocol( 'WM_DELETE_WINDOW'=>sub {exit(); } );

$dialog-> transient('');
$mw->withdraw();

my $answer = $dialog->Show();

if($answer eq "Jetzt"){
}
elsif ($answer eq "Später"){
}
elsif ($answer eq "Nie"){
my $titel = "titel";
my $text = "text";
my $bestaetigung = $mw->Dialog(-title => $titel,-text => $text, -font=>'courier 8', -buttons => ['Ja', 'Nein']);
my $antwort = $bestaetigung->show();
if($antwort eq "Ja"){
}


Also wenn man im ersten Dialog auf "Nie" klickt, soll ein zweites Dialog (zur Bestätigung) erscheinen, mit den Buttons "Ja" und "Nein".

Das zweite wird aber nicht angezeigt, die Fehlermeldung dafür:
Failed to AUTOLOAD 'Tk::Dialog::show' at C:/Dokumente und Einstellungen/fh/workspace2/login_pl/Anmelder.pl line 436

Den Kode habe ich stark vereinfacht... in den einzelnen Optionen steckt also viel drin, so dass ich jetzt die Grundstruktur ungerne ändern würde.

Könnte mir jemand sagen wie dieses zweites Dialog angezeigt werden kann? ohne am Kode viel zu ändern?

Noch eine Frage. Ich habe diese Zeile auskommentiert.
[code]#$dialog -> protocol( 'WM_DELETE_WINDOW'=>sub {exit(); } );

Das Programm soll sich beenden wenn man das Fenster schließt... habe das im Internet gefunden, hat aber nicht funktioniert. Wäre nett wenn jemand mir sagen würde wie das geht.
renee
 2008-02-14 14:21
#105887 #105887
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es heißt Show statt show...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
theresa
 2008-02-14 14:30
#105890 #105890
User since
2007-07-17
90 Artikel
BenutzerIn
[default_avatar]
Stimmt, das habe ich auch gerade verbessert. Jetzt ist die Fehlermeldung weg, das Programm macht aber nicht wieter. Nach
Code: (dl )
my $antwort = $bestaetigung->Show();

Das neue Dialog wird nicht angezeigt. Abbrechen tut es aber auch nicht.
theresa
 2008-02-14 14:41
#105891 #105891
User since
2007-07-17
90 Artikel
BenutzerIn
[default_avatar]
Ach wie blöd. Dieser Teil
Code: (dl )
1
2
$dialog-> transient('');
$mw->withdraw();

muss auch bei $bestaetigung benutzt werden. Kenne mich mit perl nicht gut aus, deswegen weiß ich auch nicht richtig was das macht, war aber dafür nötig, das erste Dialog anzuzeigen.

Könnte mir jemand noch mit dieser Frage helfen...
Ich habe diese Zeile auskommentiert.
Code: (dl )
#$dialog -> protocol( 'WM_DELETE_WINDOW'=>sub {exit(); } );


Das Programm soll sich beenden wenn man das Fenster schließt... habe das im Internet gefunden, hat aber nicht funktioniert. Wäre nett wenn jemand mir sagen würde wie das geht.
theresa
 2008-02-14 15:02
#105894 #105894
User since
2007-07-17
90 Artikel
BenutzerIn
[default_avatar]
Die Fehlermeldung dazu lautet:
Tk::Error:
(command for "
WM_DELETE_WINDOW
" window manager protocol)
Scheint etwas mit exit() falsch zu sein? habe schon mit exit und exit(0) versucht, es kommt immer dasselbe Ergebnis. Ein print hat z.B. doch funktioniert.
ptk
 2008-02-16 00:48
#105952 #105952
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Eigentlich sollte exit() funktionieren. Ansonsten kann man auch das MainWindow zerstören:
$mw->destroy
Strat
 2008-02-18 09:43
#106026 #106026
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
#$dialog -> protocol( 'WM_DELETE_WINDOW'=>sub {exit(); } );


probier mal:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$mw->protocol('WM_DELETE_WINDOW', [ \&ExitApplication, $mw] );

# ------------------------------------------------------------
sub ExitApplication {
    my ($mw) = @_;
    my $dialog = $mw->Dialog(-text => 'Programm wirklich beenden?',
                             -bitmap => 'question',
                             -title => 'Programm beenden',
                             -default_button => 'Yes',
                             -buttons => [qw/Ja Nein/],
                             );

    my $answer = $dialog->Show(); # and display dialog
    if( lc($answer) eq 'ja' ){
        exit;
        # oder: $mw->destroy();
    }
    else {
        # continue
    } # else

} # ExitApplication
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 7 Einträge, 1 Seite



View all threads created 2008-02-14 14:15.