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

GUI Python Discussion :

problème de bouton radio


Sujet :

GUI Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut problème de bouton radio
    Bonjour,

    je suis entrain de construire une interface graphique avec TK, voila mon soucis:

    def display_plot_choice(self, parents):
    self.Page['plot_choice'] = {}
    self.Page['plot_choice']['main'] = Pmw.Group(parents, tag_text='choix')

    self.Page['plot_choice']['main'].pack(fill='both', expand=1, side='left')
    cw = Tkinter.Frame(self.Page['plot_choice']['main'].interior(), width=200, height=150)
    cw.pack(padx=2, pady=2, expand='yes', fill='both')

    self.Page['plot_choice']['boutton1'] = StringVar()
    self.Page['plot_choice']['boutton1_button'] = Tkinter.Radiobutton(cw,
    text="boutton1",
    value="boutton1",
    variable=self.Page['plot_choice']['boutton1'],
    font=("Times", 10, ""))
    self.Page['plot_choice']['boutton1_button'].pack(side=LEFT, padx=10, fill='x')





    self.Page['plot_choice']['boutton2] = StringVar()
    self.Page['plot_choice']['boutton2_button'] = Tkinter.Radiobutton(cw,
    text="boutton2",
    value="boutton2",
    variable=self.Page['plot_choice']['boutton2'],
    font=("Times", 10, ""))
    self.Page['plot_choice']['boutton2_button'].pack(side=LEFT, padx=10, fill='x')


    Mon problème est le suivant : j'aimerais initialisé le boutton 1 ou 2 au démarrage peu importe et quand je sélectionne le boutton1 l'autre sera désactivé

    merci de votre aide

  2. #2
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut
    Salut babi307,
    Comme tous les nouveau sur le forums tu a omis de mettre ton code entre des balise de codes ce qui le rend inlisible et du coup il n'est pas indenter en mettant ton code entre des balise code (le bouton dièse dans l'interface pour les faire apparaître) il restera indenter si tu fait un copier-coller et il sera même colorer syntaxiquement:
    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
     
    def display_plot_choice(self, parents):
      self.Page['plot_choice'] = {}
      self.Page['plot_choice']['main'] = Pmw.Group(parents, tag_text='choix')
     
      self.Page['plot_choice']['main'].pack(fill='both', expand=1, side='left')
      cw = Tkinter.Frame(self.Page['plot_choice']['main'].interior(), width=200, height=150)
      cw.pack(padx=2, pady=2, expand='yes', fill='both')
     
      self.Page['plot_choice']['boutton1'] = StringVar()
      self.Page['plot_choice']['boutton1_button'] = Tkinter.Radiobutton(cw, text="boutton1",value="boutton1",variable=self.Page['plot_choice'['boutton1'],font("Times", 10, ""))
      self.Page['plot_choice']['boutton1_button'].pack(side=LEFT, padx=10, fill='x')
     
     
     
     
     
      self.Page['plot_choice']['boutton2'] = StringVar()
      self.Page['plot_choice']['boutton2_button'] = Tkinter.Radiobutton(cw,text="boutton2",value="boutton2",variable=self.Page['plot_choice']['boutton2'],font=("Times", 10, ""))
      self.Page['plot_choice']['boutton2_button'].pack(side=LEFT, padx=10, fill='x')
    Voila ce que ca donne avec les balises et je pense qu'il est mieux d'utiliser un IntVar pour le contrôle qu'il faut faire correspondre a la valeur de l'attribut value de tes Radiobutton en utilisant la méthode set() du IntVar() dans les callback de l'attribut command ou ailleurs mais la base est la correspondance entre les valeurs et tu peut utiliser les méthodes select() et deselect() des Radiobutton pour choisir le premier sélectionner comme le code suivant illustre simplement:

    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
     
    # -*- coding: utf-8 -*-
    from Tkinter import*
     
     
    a=Tk()
     
    def test1() :
      is_on.set(1)
     
    def test2() :
      is_on.set(2)
     
     
    is_on=IntVar()
    is_on.set(1)
     
    b=Radiobutton(text='button 1',value=1,variable=is_on,command=test1)
    c=Radiobutton(text='button 2',value=2,variable=is_on,command=test2)
     
     
    b.select()
    c.deselect()
    #c.select() pour inverser
    #b.deselect() pour inverser
    b.pack()
    c.pack()
    a.mainloop()
    Je te conseille le document suivant pour tous connaître de Tkinter (ca date un peu mais je ne connait de document plus complet.).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut
    merci de votre réponse et ça marche très bien,
    voila ce que je veux faire en fait j'ai une application (interface graphique avec des onglets) et dans un de ses onglets j'ai créé un rectangle et dedans je veux créé un champ @IP (où je pourrais rentrer l@ IP) avec un bouton Connect (à cliquer dessus si c'est pas connecté et ça devient deconnecté si c'est l'inverse)

    aurez vous le code source de ce dernier ?
    voici où je voudrais rajouter le bouton et le champ de l@

    merci d'avance

    1 def display_plot_choice(self, parents):
    2 self.Page['plot_choice'] = {}
    3 self.Page['plot_choice']['main'] = Pmw.Group(parents, tag_text='choix')
    4
    5 self.Page['plot_choice']['main'].pack(fill='both', expand=1, side='left')
    6 cw = Tkinter.Frame(self.Page['plot_choice']['main'].interior(), width=200, height=150)
    7 cw.pack(padx=2, pady=2, expand='yes', fill='both')

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Citation Envoyé par babi307 Voir le message
    j'ai créé un rectangle et dedans je veux créé un champ @IP (où je pourrais rentrer l@ IP) avec un bouton Connect (à cliquer dessus si c'est pas connecté et ça devient deconnecté si c'est l'inverse
    Comme ceci ?
    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
    import Tkinter as tk
     
     
    def connectclick():
        if connect.cget('text') == "Connect":
            connect.config(text="Disconnect")
            # Code de connexion
            print("Connexion %s" % ip.get())
        else:
            connect.config(text="Connect")
            # Code de deconnexion
            print("Deconnexion %s" % ip.get())
     
     
    root = tk.Tk()
    ip = tk.Entry(root, justify="center")
    ip.insert(0, "0.0.0.0")
    ip.pack(side="left")
    connect = tk.Button(root, text="Connect", command=connectclick)
    connect.pack(side="right")
    root.mainloop()
    Bien sur ceci n'est que l'approche 'gui', le mieux étant de tester si l'on est vraiment connecter pour interagir avec l'interface (le Button).

    Pensez aux balises code (# en haut)

    @+

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Petit bonus

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
     
    import Tkinter as tk
     
     
    def quelletouche(event):
        global touche
        touche=event
     
     
    def veriftouche():
        w = touche.widget
        if touche.char in "0123456789" or touche.keysym == "BackSpace":
            if touche.keysym == "BackSpace":
                t = ""
            else:
                t = touche.char
            if int("%s%s" % (w.get(), t)) > 255:
                return False
            return True
        w.configure(validate='key', vcmd=veriftouche)
        return False
     
     
    def connectclick():
        if connect.cget('text') == "Connect":
            connect.config(text="Disconnect")
            # Code de connexion
            print("Connexion %s.%s.%s.%s" % (e1.get(), e2.get(),
                                             e3.get(), e4.get()))
        else:
            connect.config(text="Connect")
            # Code de deconnexion
            print("Deconnexion %s.%s.%s.%s" % (e1.get(), e2.get(),
                                               e3.get(), e4.get()))
     
     
    root = tk.Tk()
    ip = tk.Frame(root, bd=1, relief="sunken")
    e1 = tk.Entry(ip, justify="center", bd=0, highlightthickness=0,
                  insertborderwidth=0, width=5, bg="white")
    e1.pack(side="left")
    e1.configure(validate='key', vcmd=veriftouche)
    e1.bind("<Key>", quelletouche)
    tk.Label(ip, text=".", bg="white", bd=0,
             highlightthickness=0).pack(side="left")
    e2 = tk.Entry(ip, justify="center", bd=0, highlightthickness=0,
                  insertborderwidth=0, width=5, bg="white")
    e2.pack(side="left")
    e2.configure(validate='key', vcmd=veriftouche)
    e2.bind("<Key>", quelletouche)
    tk.Label(ip, text=".", bg="white", bd=0,
             highlightthickness=0).pack(side="left")
    e3 = tk.Entry(ip, justify="center", bd=0, highlightthickness=0,
                  insertborderwidth=0, width=5, bg="white")
    e3.pack(side="left")
    e3.configure(validate='key', vcmd=veriftouche)
    e3.bind("<Key>", quelletouche)
    tk.Label(ip, text=".", bg="white", bd=0,
             highlightthickness=0).pack(side="left")
    e4 = tk.Entry(ip, justify="center", bd=0, highlightthickness=0,
                  insertborderwidth=0, width=5, bg="white")
    e4.pack(side="left")
    e4.configure(validate='key', vcmd=veriftouche)
    e4.bind("<Key>", quelletouche)
    connect = tk.Button(ip, text="Connect", command=connectclick, bd=0)
    connect.pack(side="left")
    ip.pack(side="left")
    root.mainloop()

Discussions similaires

  1. [PHP-JS] Problème de boutons radio
    Par maroco31 informatik dans le forum Langage
    Réponses: 3
    Dernier message: 01/06/2007, 10h13
  2. [PHP-JS] problème de bouton radio
    Par mitch46000 dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2007, 10h57
  3. Problème avec bouton radio sous IE.
    Par waldo2188 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 21/06/2006, 12h11
  4. Problème de boutons radio pour récuperer les infos
    Par marsupilami34 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2005, 11h47
  5. Problème de boutons radio
    Par BRAUKRIS dans le forum Composants
    Réponses: 3
    Dernier message: 03/06/2004, 02h41

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