IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Perl Discussion :

Fenêtre MainWindow et fenêtre "fille"


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut Fenêtre MainWindow et fenêtre "fille"
    Bonjour,

    Je souhaiterai créer dans une application, une deuxième fenêtre ayant les caractéristiques suivantes :

    1) mêmes propriétés graphiques qu'une MainWindow.

    2) créée lors de l'appel d'une fonction.

    3) qui se comporte comme une fenêtre "fille", je veux dire par là comme une fenêtre de type dialog, c-à-d qui puisse se fermer avec un clic sur un bouton et terminer la fonction qui l'a créée en renvoyant éventuellement des données.

    Est-ce possible ?

    Merci.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Réponse : oui.

  3. #3
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Dans ce cas, par quoi faut-il remplacer MainWindow->New(....).

    Pour être plus précis, mon problème est le suivant :

    J'ai un script principal dans lequel est gérée la fenêtre MainWindow de l'application. Pour la saisie d'un nombre important de données, j'ai décidé d'utiliser une seconde fenêtre, qui contient plusieurs frames, eux-mêmes contenant des check_buttons.

    A partir d'une fonction_1 du script principal, j'appelle une fonction_2 que j'ai placée dans un module (pour des problèmes de taille de fichier). C'est cette fonction_2 qui crée la 2eme fenêtre MainWindow.

    Une fois mes données saisies, j'arrive à fermer la 2eme fenêtre à l'aide d'un bouton associé à l'instruction destroy.

    Mais c'est comme si ma fonction_2 ne se terminait pas, et du coup je ne reprends plus la main sur le déroulement du script principal.

    En plus du type de fenêtre, je pense que sa création est mal conçue, et là je bloque un peu.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Utilise le widget TopLevel.

  5. #5
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Pb Edition

  6. #6
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    # Creation du widget principal
    my $Wm = MainWindow->new(
    	-width => $width,
    	-height => $height,
    	-title => "Principal",
            -background => 'white',
    );
     
    # Fenêtre secondaire
    my $Wm_Sortie = $Wm->Toplevel(
    	-title => "Sortie",
    	-background => 'white',
    );
    $Wm_Sortie->geometry("300x100+900+30");
     
    my $SortieSave = $Wm_Sortie->Button(
    	-text    => 'Save and exit',
    	-font    => '{Simplified Arabic} 12 {bold}',
    	-command => sub {
    		sauvegarde_configuration( $fichier, $ref_config );
    		exit;
    	}
    );
     
    my $SortieSansSave = $Wm_Sortie->Button(
    	-text    => 'Exit without save',
    	-font    => '{Simplified Arabic} 12 {bold}',
    	-command => sub {
    		$Wm->destroy;
    		exit;
    	}
    );

  7. #7
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Merci dmganges,

    J'ai compris. J'avais fait quelques essais et ne ne comprenais pas d'où venaient les messages d'erreur. Si la fenêtre principale s'appelle $main, pour créer la secondaire l'instruction est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $secondaire = $main->Toplevel();
    et non pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $secondaire = $main->TopLevel();
    Pas de 'L' .

    Pour conclure et pour ceux que ça pourrait également intéresser, voilà un bout de code qui crée une fenêtre de type Toplevel, mais à l'intérieur d'une fonction, comme je le souhaitais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #!/usr/bin/perl -w
     
    use strict;
    use warnings;
    use Tk;
     
    my $TestWindow;
     
    my $main = MainWindow->new( title => "Essai Widget TopLevel" );
    $main->geometry("300x200+100+100");
     
    $main->Button( -text    => "Click Me",
                   -command => \&newWindow)->pack();
     
    MainLoop;
     
    sub newWindow {
       $TestWindow = $main->Toplevel( -title => 'Secondaire' );
       $TestWindow->Label ( -text    => "I want to close this new toplevel window!")->pack();
       $TestWindow->Button( -text    => "Close Me",
                            -command => \&closeWindow )->pack();
     
    }
     
    sub closeWindow {
       $TestWindow->destroy();
    }
    Encore merci, je peux poursuivre...

    Krys006

  8. #8
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    De rien,
    Pardon, j'ai fait juste un copier/coller car je n'avais pas le temps ce matin, j'ai même oublié BONJOUR...
    Si tu avais collé ton bout de code lors de ta première question, djibril t'aurait de suite signalé l'erreur de syntaxe...
    Si tu repasses, clique sur [Résolu]
    Bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo