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 :

Récupération choix sous menu cascade


Sujet :

Interfaces Graphiques Perl

  1. #1
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut Récupération choix sous menu cascade
    Bonjour,

    Je suis en train de faire un menu avec sous menu en cascade, cela fonctionne pour la mise en place mais je ne sais pas comment récupérer la sélection finale... voici le code:

    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
    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    # -- Définition des Variables Tk -- #
     
    my ($Fenetre_Principale, $Frame_Principale);
     
    my $color = "thistle4";
     
    my ($Barre_Menu, $Menu_App, $Sous_Menu_App);
     
     
     
    # -- Création de la Fenêtre Principale -- #
     
    $Fenetre_Principale = MainWindow->new();
     
    $Fenetre_Principale->minsize('800','600');
     
    $Fenetre_Principale->title("Interface Admin ISOTOP");
     
     
     
    # -- Création de la Frame Centrale -- #
     
    $Frame_Principale = $Fenetre_Principale -> Frame(-relief => 'groove', -borderwidth =>8, -background => $color);
     
     
     
     #tableau contenant les noms des sous menus
     
    my @Table_Sous_Menu = ("DBI_MyAdmin");
     
    #tableau contenant le nom des commandes dans le sous-menu Nouveau...
     
    my @DBI_MyAdmin = ("Langue","Jetton");
     
    #On précise quelles commandes correspondent à quel sous-menu
     
    my %sous_menu = ("DBI_MyAdmin" => \@DBI_MyAdmin);
     
    my %sous_menuref;
     
     
     
    # -- Création de la barre de menu (enTête de page) -- #
     
    $Barre_Menu = $Fenetre_Principale -> Frame(-relief => 'groove' , -borderwidth =>2, -background => $color, -foreground => 'white');
     
     
     
    # -- Gestion des Menus -- #
     
    	# -- Menu Application -- #
     
    $Menu_App = $Barre_Menu->Menubutton(-text => 'Application',
     
    									-font => '{Garamond} 12',
     
    									-tearoff => 0,
     
    									-background => $color, 
     
    									-foreground => 'white'
     
    									);	
     
     
     
    #Création des sous menus avec leurs commandes
     
    foreach my $m (@Table_Sous_Menu) 
     
    	{
     
    	$sous_menuref{$m} = $Menu_App->menu->Menu;
     
    	my @a=values(%sous_menu);
     
    	map( $sous_menuref{$m}->add('command',-label => $_, -command => sub {Sous_Menu(@{$sous_menu{$m}});}), @{$sous_menu{$m}} );
     
    	$Menu_App->cascade(-label => $m);	
     
    	#affichage des contenus des sous-menus
     
    	$Menu_App->entryconfigure($m, -menu => $sous_menuref{$m});
     
        }
     
     
     
    # -- Gestion de l'affichage des widget -- #
     
    $Barre_Menu->pack(-side => 'top' , -anchor => 'n' , -fill => 'x'); 
     
    $Frame_Principale->pack(-anchor => 'center', -fill => 'both', -expand => 'y');
     
    $Menu_App->pack(-side => 'left');
     
     
     
    # -- Lanceur d'évènement -- #
     
    MainLoop;
     
     
     
    # -- Fonctions Principales -- #
     
     
     
    sub Sous_Menu
     
    	{
     
    	my ($test) = @_;
     
    	print $test;
     
    	}
    en faite il me renvoie toujours la valeur "Langue", que je clique sur Langue ou Jetton c'est pareil...?

    Est ce bien comme ça qu'il faut procéder ou il y a t il une autre façon d'associer une fonction à un sous menu ? (je n'arrive à trouver nulle part d'explication sur ça...)

    Meric d'avance

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Tu te compliques beaucoup la vie en utilisant les Menubutton.

    Lorsque l'on souhaite créer un menu principal qui sera en haut d'un widget, personnellement, je préfère utiliser la méthode Menu. Dès que j'ai un peu de temps, aujourd'hui, je rajouterais le code dans la FAQ Perl/Tk.

    En attendant, voici ce que j'ai fait avec ton code.
    Il est beaucoup plus simple, propre, court et compréhensible. Tu peux le tester, et par la suite t'en inspirer.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    use Tk;
     
    # -- Définition des Variables Tk -- #
    my ( $Fenetre_Principale, $Frame_Principale );
    my $color = "thistle4";
    my ( $Barre_Menu, $Menu_App, $Sous_Menu_App );
     
    # -- Création de la Fenêtre Principale -- #
    $Fenetre_Principale = MainWindow->new();
    $Fenetre_Principale->minsize( '800', '600' );
    $Fenetre_Principale->title("Interface Admin ISOTOP");
     
    #===================================
    # Création d'un menu principal
    #===================================
    my $MenuBar = $Fenetre_Principale->Menu( -type => "menubar", );
    $Fenetre_Principale->configure( -menu => $MenuBar, );
     
    # Configuration de mon menu
    # Menu Application (qui contiendra des sous menu)
    my $MenuApplication = $MenuBar->cascade( -label => "Application", -tearoff => 0, );
    my $DBI_MyAdmin_Menu = $MenuApplication->cascade( -label => "DBI_MyAdmin", -tearoff => 0, );
    foreach ( qw/ Langue Jetton / ) {
      $DBI_MyAdmin_Menu->command(
        -label   => $_,
        -command => [\&Sous_Menu, $_],
      );
    }
     
     
    # -- Création de la Frame Centrale -- #
    $Frame_Principale = $Fenetre_Principale->Frame(
        -relief      => 'groove',
        -borderwidth => 8,
        -background  => $color
    );
     
     
    # -- Gestion de l'affichage des widget -- #
    $Frame_Principale->pack(
        -anchor => 'center',
        -fill   => 'both',
        -expand => 'y'
    );
     
    # -- Lanceur d'évènement -- #
    MainLoop;
     
    # -- Fonctions Principales -- #
    sub Sous_Menu {
        my ($test) = @_;
        print $test;
    }

  3. #3
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    Salut et merci à toi djibril!!!

    C'est exactement ce qu'il me fallait et c'est en effet bien plus claire comme ça, et surtout je comprends mieux le fonctionnement "cascade"...

    Merci encore

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

Discussions similaires

  1. Choix de sous-menu
    Par {F-I} dans le forum jQuery
    Réponses: 4
    Dernier message: 31/07/2013, 16h30
  2. Menu / Sous Menu
    Par lenouvo dans le forum MFC
    Réponses: 5
    Dernier message: 27/10/2004, 15h50
  3. Créer un sous-menu dynamiquement
    Par PurL dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/09/2004, 10h31
  4. ContextMenu de l'explorer: Problème de sous menu
    Par Ingham dans le forum Composants VCL
    Réponses: 8
    Dernier message: 26/02/2004, 08h06
  5. Réponses: 9
    Dernier message: 14/10/2003, 15h35

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