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 :

Bouton inactif qui "semble" actif


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Bouton inactif qui "semble" actif
    Bonjour à tous,

    je souhaiterai avoir dans une interface un Checkbutton bloqué en position "onvalue".
    Autrement dit, le bouton doit sembler actif (visuellement parlant) mais sa valeur ne doit pas pouvoir être changée (toujours en "onvalue").

    Je pensais utiliser le -state=>'disabled'. Je peux changer la couleur du texte du bouton avec -disabledforeground pour la rendre similaire avec la couleur du texte en mode -state=>'normal' mais a priori je ne peux changer la couleur du Checkbutton (de gris en 'disabled' à un rouge en 'normal').

    Existe-t-il une solution à ce pb?

    Merci par avance.

  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
    Peux-tu nous montrer ton code ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Il n'y a pas de code justement, enfin juste le code d'un checkbutton...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mw->Checkbutton(-text=>"toto", -variable=>\$toto, -offvalue=>'0', -onvalue=>'1', -state=>'disabled',-disabledforeground=>'black')->pack();
    Disons que ce bout de code est la base.
    Je pense qu'il faut mettre -state à "disabled" mais pour le reste, je ne sais pas ce qu'il faut ajouter

  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
    En Perl/Tk, il est difficile de déboguer les gens sans avoir de code pour voir l'effet. Lorsque l'on te demande un code, c'est un code que je pourrais tester tout de suite pour reproduire ton problème. donc à toi de réécrire un code pour le tester. Je n'ai pas toujours le temps de réécrire un script pour avoir ton souci.

  5. #5
    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
    T'aurais pu me donner un programme comme celui-ci à tester :
    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
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk;    # Appel du module Tk
     
    # Programme principal
    # Création de la fenêtre
    my $fenetre = new MainWindow(
      -title      => 'Première fenêtre Tk',
      -background => 'white',
    );
     
    # Taille minimale de ma fenêtre
    $fenetre->minsize( 300, 100 );
    my $toto = "TEXTE";
     
    $fenetre->Checkbutton(
      -text     =>  "toto", 
      -variable =>  \$toto, 
      -offvalue =>  '0', 
      -onvalue  =>  '1', 
      -state    =>  'disabled',
      #-disabledforeground =>  'black'
    )->pack();
    MainLoop;    # Obligatoire

  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 : 499 184
    Points
    499 184
    Par défaut
    L'unique parade trouvée :
    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
    use warnings;
    use strict;
    use Tk;  
     
    my $fenetre = new MainWindow(
      -title      => 'Utilisation de Checkbutton',
      -background => 'white',
    );
     
    # Taille minimale de ma fenêtre
    $fenetre->minsize( 300, 100 );
     
    $fenetre->Checkbutton(
      -text             =>  "Checkbutton normal",    
      -background       => 'white',
      -foreground       => 'black',
      -activebackground => 'white',
    )->pack();
    $fenetre->Checkbutton(
      -text               =>  "Checkbutton desactive",    
      -state              => 'disabled',
      -background         => 'white',
      -foreground         => 'black',
      -disabledforeground => 'black',
    )->pack();
     
    MainLoop;
    Avec du blanc.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Merci pour ta réponse.

    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
     
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk;  
     
    my $mw= new MainWindow(
      -title      => 'Utilisation de Checkbutton',
    );
     
    # Taille minimale de ma fenêtre
    $mw->minsize( 300, 100 );
     
     
    my $top_frame=$mw->Frame()->pack();
     
    $top_frame->Frame(
         -borderwidth=>'2',
         -relief=>'sunken',
         -background=>'red',
         -width=>'15',   
         -height=>'15'
    )->pack(-side=>'left');
    $top_frame->Frame(
          -label=>"toto"
    )->pack(-side=>'left', -padx=>'2');
     
     
    $mw->Checkbutton(
          -text=>'vrai checkbutton'
    )->pack();
     
     
    MainLoop;
    J'ai finalement opté pour la reproduction d'un checkbutton (qui est juste un frame avec un design particulier et un comportement particulier) avec un frame en adaptant la taille et la couleur (mon rouge n'est pas le bon ici mais c'est juste pour illustrer).

    Le but était de feindre un checkbutton.

  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 : 499 184
    Points
    499 184
    Par défaut
    C'est également une solution.

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

Discussions similaires

  1. supprimer une table qui a des quotes dans son nom
    Par kleenex dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 16h03

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