Schrift
[thread]10431[/thread]

Einem Fenster ein anderes vorlagern



<< >> 7 Einträge, 1 Seite
fabmo
 2007-09-20 18:37
#99757 #99757
User since
2007-09-18
26 Artikel
BenutzerIn
[default_avatar]
Hallo allerseits,

wie kann ich einem Fenster ein anderes möglichst geschickt vorlagern.
Also ich starte das Programm, es öffnet sich ein Fenster.... und wenn dort aud OK geklickt wird erst öffnet das hauptprogramm.
sWeatinho
 2007-09-20 19:05
#99762 #99762
User since
2007-09-20
5 Artikel
BenutzerIn
[default_avatar]
Also ich denke elegant wäre, wenn du zwei unterschiedliche .pl dateien anlegst (eine für dein startfenster und eine fürs hauptprogramm) und dann über den button im startfenster mit dem befehl exec (Fremdprogramm aufrufen und eigenen Prozess beenden) oder system (Fremdprogramm aufrufen und eigenen Prozess erhalten) das hauptprogramm aufrufst.

Hier ein kleiner Beispiel Code, den ich gebastelt habe (öffnet den Internet Explorer).

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!usr/bin/perl

use strict;
use warnings;

use Tk;



my $MW = MainWindow->new();
my $Button = $MW -> Button(-text=>"Open",-command=> \&open);
$Button -> pack();

MainLoop;

sub open{
        exec('"C:/Programme/Internet Explorer/iexplore.exe"');  
        ####Oeffnet den IE und schließt das Button-Fenster
}
fabmo
 2007-09-20 19:59
#99766 #99766
User since
2007-09-18
26 Artikel
BenutzerIn
[default_avatar]
Hallo und danke für deine Antwort.

Das sieht ja schonmal echt gut aus. Gäne es denn evtl. eine Möglichkeit, dass alles in einer Datei steht? In zwei Datein wäre zwar mögllich für das was ich vorhabe aber eine wäre halt optimaler.???

Gibt es nicht irgendeinen Befehl, womit man den Programmablauf anhält, bis irgendein Knopf gedrückt ist?
#Kein Kommentar
 2007-09-20 21:20
#99768 #99768
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
Theoretisch ist das doch sWeatinho's Beipspiel, anstatt der exec-option
führst du eben deinen Perl/tk -Code aus.
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
fabmo
 2007-09-21 01:09
#99776 #99776
User since
2007-09-18
26 Artikel
BenutzerIn
[default_avatar]
Hallo,

ja aber dann wird beim Programmablauf ja nicht gewartet bis das Fester quittiert wirde also der button in dem fenster geklickt wurde oder?
#Kein Kommentar
 2007-09-21 01:14
#99777 #99777
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
alles was in einer subroutine steht, wird erst ausgeführt, wenn sie aufgerufen
wird. sprich in diesem fall wenn der button gedrückt wurde.

guten feierabend!
#KK
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
sWeatinho
 2007-09-21 11:25
#99786 #99786
User since
2007-09-20
5 Artikel
BenutzerIn
[default_avatar]
wenn du dein hauptprogramm dann in die subroutine schreibst sollte das einwandfrei klappen...


mein beispiel mal auf deinen wunsch umgemünzt:
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
23
24
25
26
#!usr/bin/perl

use strict;
use warnings;

use Tk;



my $MW = MainWindow->new();
my $Button = $MW -> Button(-text=>"Open",-command=> \&open);
$Button -> pack();

MainLoop;

sub open{
        $MW->destroy();
        &hauptprogramm;
}

sub hauptprogramm{
        $MW = MainWindow->new();
        my $Label = $MW -> Label(-text=>"Hier kann das Hauptprogramm eingefügt werden!");
        $Label -> pack();
        $MW -> focusForce();  ####Damit das Hauptprogramm den Fokus kriegt
}


so würde es funktionieren auch wenn ich zum beispiel noch zu faul war dem neuen mainwindow einen anderen variablen-namen zu geben!
<< >> 7 Einträge, 1 Seite



View all threads created 2007-09-20 18:37.