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 :

[GTK] ouvrir une nouvelle fenêtre depuis un menu


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut [GTK] ouvrir une nouvelle fenêtre depuis un menu
    Salut tout le monde.
    J'aurais une question ; J'ai un menu qui quand je clique dessus doit m'ouvrir une nouvelle fenêtre. Bon avec il y a les fenêtre classique info, warning, question...
    Mais j'aiemrais que ca ouvre une fenêtre que je créé moi même avec des label...
    Est ce qu'il faut que dans la fonction qui va m'ouvrir la feêtre je fasse newWindow?

    Merci d'avance pour l'aide.

    PS : je commence tout juste le GTK, et je ne suis pas encore au point avec le nom des méthode et des éléments de GTK

  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 : 498 771
    Points
    498 771
    Par défaut
    Si c'était du Tk, je t'aurais dis de créer une nouvelle fenetre via la méthode Toplevel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $NewWidget = $FenetreParent->Toplevel();
    En GTK, je connais pas trop, mais tu peux je pense faire aussi new windows si tu le veux, ça devrait fonctionner.

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Ok, j'ai tenté le newWindow, mais le soucis, c'est que quand je ferme cette fenêtre, ca me ferme toute les fenêtres.

    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
     
    sub on_recherche_nom {
    	my $window = Gtk2::Window->new("toplevel" ) ;
    	$window->set_title ("Recherche par nom" ) ;
    	$window->signal_connect (destroy => sub { Gtk2->main_quit }) ;
    	$window->set_default_size(320 ,200 ) ;
     
    	my  $vbox = Gtk2::VBox->new( FALSE, 0  ) ;
    	$window->add( $vbox ) ;
    	$vbox->show() ; 
     
    	my $Recherche_Label = Gtk2::Label->new("Entrez le nom recherchée" ) ;
    	$vbox->pack_start($Recherche_Label, TRUE, TRUE, 0 ) ;
    	my  $entry = Gtk2::Entry->new() ;
    	$entry->signal_connect( "activate" , \&enter_callback, $entry ) ;
    	$entry->set_text( "Salut " ) ;
    	$entry->append_text( "à tous !" ) ;
    	$entry->select_region( 0 , length( $entry->get_text() ) ) ;
    	$vbox->pack_start( $entry, TRUE, TRUE, 0 ) ;
    	$entry->show() ;
     
    	$window->show_all() ;
     
    }
    Le soucis vient de la méthode destroy que j'utilise, mais je ne saias pas quelle autre méthode je peux utiliser pour ne pas fermer la fenêtre principal en fermant la fenêtre recherche.

    Merci pour votre aide.

  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 : 498 771
    Points
    498 771
    Par défaut
    il faut que tu appliques la méthode destroy au widget que tu veux fermer uniquement

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Ok, donc un truc du style $window->destroy();
    Le soucis, c'est que en faisant ca, ca ferme la window avant même que j'ai pu faire le moindre truc dans la fenêtre.. il y a un truc à faire en plus je crois non?

    EDIT : a force de chercher j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $window->signal_connect (destroy => sub { $window->destroy() }) ;
    Est ce que quelqu'un pourrait me dire si c'est bien, ou si ca va poser problème par la suite?
    Je viens de tester et ca marche, mais.. est ce que c'est correct ou alors une méthode plus que barbare à votre avis?

    Merci

  6. #6
    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 : 498 771
    Points
    498 771
    Par défaut
    c'est quoi le but de ta procédure signal_connect ?

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    D'après ce que j'ai compris c'est la méthode qui va être lancée lors de la fermeture de la fenêtre.. enfin d'après ce que j'ai compris.

    Comme je l'ai dit je débute en GTK (j'ai commencé ce matin)

  8. #8
    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 : 498 771
    Points
    498 771
    Par défaut
    mais si tu as débuté ce matin, c'est bien toi qui a écrit le code ci-dessus ?

  9. #9
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Nop, c'est le code d'un tuto que je modifie selon mes besoins. C'est pour ca que je demande si ce que je fais est bien ou non. la fonction recherche, c'est de mon cru. la dernière ligne de code que j'ai posté aussi.

  10. #10
    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 : 498 771
    Points
    498 771
    Par défaut
    Bon, je te conseil de refaire le script toi même, ce sera beaucoup mieux et surtout beaucoup plus propre.

    De plus, tu comprendras mieux ce que tu fais vu que tu débutes.

    Il y a une doc sur GTK sur la partie cours de la rubrique Perl.

    Si t'as besoin d'aide, on est là pour t'aider.

    Je maitrise plus le TK, mais je peux toujours me mettre un peu au GTK pour te guider, j'ai un peu de temps

  11. #11
    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 : 498 771
    Points
    498 771
    Par défaut
    d'ailleurs, je te conseil de faire soit du Tk, soit du GTK2 car GTK n'est plus maintenu.
    La documentation est aussi à lire sur le CPAN

  12. #12
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Je suis sur GTK2, je l'avais pas mis? oups

    et je suis ce tuto là sur le GTK2

    http://pagesperso-orange.fr/gtk2-per...torielpa4.html

  13. #13
    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 : 498 771
    Points
    498 771
    Par défaut
    ok

  14. #14
    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 : 498 771
    Points
    498 771
    Par défaut
    D'ailleurs, pourquoi as tu choisi ce module Gtk2 et non Tk, juste par curiosité

  15. #15
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    heu.. j'avaisplus entendu parler de gtk que de TK dans mon entourage.. donc bon... j'ai essayer d'installer GTK ... jusqu'à ce que je me rende compte que CPAN refusait de l'installer parce qu'il y avait GTK2 qui était déjà à moitié installé sur mon pc

    Sinon l'ambition finale de mon projet, c'est de faire un genre de google maps en perl...
    donc déjà je vois comment marche les interface graphique. Ensuite il faudra que je trouve des modules qui utilisent/fournissent des cartes du monde ...

  16. #16
    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 : 498 771
    Points
    498 771
    Par défaut
    Pardon, peux tu repondre à cette question ici

  17. #17
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    C'est fait

  18. #18
    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 : 498 771
    Points
    498 771
    Par défaut
    OK, c'est bien.
    bon t'en es ou dans ton souci?

  19. #19
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    heu c'est bon je ferme la fenètre sans que ca me ferme tout avec la ligne de code que j'ai donné taleur.
    Là j'essai de voir s'il y a un moyen de passer un paramètre pour modifier les messages de l'interface en fonction du paramètre.. du genre, recherche par rapport à un nom, un prénom, ou que sais je d'autre un titre, un auteur une date de publication...

    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
     
    $menuitem17->signal_connect("activate" ,\&on_recherche("Titre de la fenetre","message dans la fenetre"),$window) ;
     
     
    sub on_recherche() {
    	my $window = Gtk2::Window->new("toplevel" ) ;
    	$window->set_title ($_[0] ) ;
    	$window->signal_connect (destroy => sub { $window->destroy() }) ;
    	$window->set_default_size(320 ,200 ) ;
     
    	my  $vbox = Gtk2::VBox->new( FALSE, 0  ) ;
    	$window->add( $vbox ) ;
    	$vbox->show() ; 
     
    	my $Recherche_Label = Gtk2::Label->new($_[1]) ;
    	$vbox->pack_start($Recherche_Label, TRUE, TRUE, 0 ) ;
    	my  $entry = Gtk2::Entry->new() ;
    	$entry->signal_connect( "activate" , \&enter_callback, $entry ) ;
    	$entry->set_text( "Salut " ) ;
    	$entry->append_text( "à tous !" ) ;
    	$entry->select_region( 0 , length( $entry->get_text() ) ) ;
    	$vbox->pack_start( $entry, TRUE, TRUE, 0 ) ;
    	$entry->show() ;
     
    	$window->show_all() ;
     
    }
    Ce code marche pas bien du tout. Quand je lance le script, il m'ouvre la deuxième fenètre (recherche) sans que j'ai a allé me balader dans le menu. et quand je ferme la fenètre recherche et que j'essai de la rouvrir j'ai ces messages d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    *** unhandled exception in callback:
    ***   Not a CODE reference at interface.pl line 143.
    ***  ignoring at interface.pl line 143.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/04/2010, 13h35
  2. Réponses: 17
    Dernier message: 31/08/2006, 14h50
  3. ouvrir une nouvelle fenêtre dans une taille déterminé
    Par lnikolanta dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/09/2005, 15h26
  4. Ouvrir une nouvelle fentre en grand ?
    Par Sylk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 15/09/2005, 13h14
  5. [ShellExecute] ouvrir une nouvelle fenêtre ie
    Par sony351 dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/11/2004, 18h39

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