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

Tkinter Python Discussion :

Impossible de récupérer la valeur de mes radiobutton, arrachage de cheveux


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut Impossible de récupérer la valeur de mes radiobutton, arrachage de cheveux
    Bonjour à tous et à toutes,

    Ma question sera nécessairement stupide et loin d'être difficile à résoudre mais c'est en dernier recours que je viens la poser ici, j'ai cherché des heures durant mais sans succès.

    Je débute dans la programmation G.u.i, merci de ceux qui voudront bien m'apporter leurs lumières
    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
     
     
    def install_go():
    	print boxe_prise.get()
     
     
    def install():
    	install = Tk()
    	cochez = Label(install, text ="Cochez la Rogue voulue ?")
    	boxe_prise = StringVar()
    	global boxe_prise
    	radiobutton1 = Radiobutton(install, text="Choix 1", variable=boxe_prise, value="Freebox", command=install_go)
    	radiobutton2 = Radiobutton(install, text="Choix 2", variable=boxe_prise, value="Numericable", command=install_go)
    	radiobutton3 = Radiobutton(install, text="Choix 3", variable=boxe_prise, value="Livebox", command=install_go)
    	radiobutton4 = Radiobutton(install, text="Choix 4", variable=boxe_prise, value="Bbox", command=install_go)
    	button_install = Button(install, text ="APPLIQUER", command=install.destroy)
    	button_install.grid(row = 6, column = 1)
    	radiobutton1.grid(row = 1, column = 0)
    	radiobutton2.grid(row = 1, column = 1)
    	radiobutton3.grid(row = 2, column = 0)
    	radiobutton4.grid(row = 2, column = 1)
    	cochez.grid(row = 0, column = 0)
    	install.mainloop()

    Quand je sélectionne un champ, le print ne renvoie rien ...

    Merci d'avance

    Carto_

  2. #2
    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
    Bonsoir,

    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
    from Tkinter import *
     
    def install():
    	install = Tk()
    	cochez = Label(install, text ="Cochez la Rogue voulue ?")
    	global boxe_prise
    	boxe_prise = StringVar()
    	radiobutton1 = Radiobutton(install, text="Choix 1", variable=boxe_prise, value="Freebox", command=install_go)
    	radiobutton2 = Radiobutton(install, text="Choix 2", variable=boxe_prise, value="Numericable", command=install_go)
    	radiobutton3 = Radiobutton(install, text="Choix 3", variable=boxe_prise, value="Livebox", command=install_go)
    	radiobutton4 = Radiobutton(install, text="Choix 4", variable=boxe_prise, value="Bbox", command=install_go)
    	button_install = Button(install, text ="APPLIQUER", command=install.destroy)
    	button_install.grid(row = 6, column = 1)
    	radiobutton1.grid(row = 1, column = 0)
    	radiobutton2.grid(row = 1, column = 1)
    	radiobutton3.grid(row = 2, column = 0)
    	radiobutton4.grid(row = 2, column = 1)
    	cochez.grid(row = 0, column = 0)
    	install.mainloop()
     
    def install_go():
    	print boxe_prise.get()
     
    install()
    Mais bon :

    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
    import Tkinter
     
    def install():
    	install = Tkinter.Tk()
    	global boxe_prise
    	boxe_prise = Tkinter.StringVar()
    	Tkinter.Label(install, text ="Cochez la Rogue voulue ?").grid(row = 0, column = 0)
    	Tkinter.Radiobutton(install, text="Choix 1", variable=boxe_prise, value="Freebox", command=install_go).grid(row = 1, column = 0)
    	Tkinter.Radiobutton(install, text="Choix 2", variable=boxe_prise, value="Numericable", command=install_go).grid(row = 1, column = 1)
    	Tkinter.Radiobutton(install, text="Choix 3", variable=boxe_prise, value="Livebox", command=install_go).grid(row = 2, column = 0)
    	Tkinter.Radiobutton(install, text="Choix 4", variable=boxe_prise, value="Bbox", command=install_go).grid(row = 2, column = 1)
    	Tkinter.Button(install, text ="APPLIQUER", command=install.destroy).grid(row = 6, column = 1)
    	install.mainloop()
     
    def install_go():
    	print boxe_prise.get()
     
    install()
    Bon code

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut
    Un immense merci pour tes réponses, seulement lorsque je lance tout ça (deuxième partie de ton script), le print me renvoie dans le shell un espace, et c'est tout, pas de valeur en bonne et due forme ... :-s

    J'appelle pourtant la fonction install simplement à l'aide d'un "command=install"
    donc je ne vois pas ce qui peut planter !

  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
    Bonsoir Carto_,

    C'est des exemples indépendants de ton code.

    Pour le reste, que dire : c'est bien le but du jeux (imports et identification des Widgets Tkinter).

    Tu utilise un from Tkinter import * et c'est ce que je fais dans mon premier exemple.
    Dans le second je fais un import Tkinter pour bien identifier mes imports (Tkinter.Button par exemple).
    J'aurais pu faire aussi import Tkinter as Tk. Ce qui donne avec ton code (c'est toujours du code indépendant):
    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
    import Tkinter as Tk
     
    def install():
    	install = Tk.Tk()
    	global boxe_prise
    	boxe_prise = Tk.StringVar()
    	Tk.Label(install, text ="Cochez la Rogue voulue ?").grid(row = 0, column = 0)
    	Tk.Radiobutton(install, text="Choix 1", variable=boxe_prise, value="Freebox", command=install_go).grid(row = 1, column = 0)
    	Tk.Radiobutton(install, text="Choix 2", variable=boxe_prise, value="Numericable", command=install_go).grid(row = 1, column = 1)
    	Tk.Radiobutton(install, text="Choix 3", variable=boxe_prise, value="Livebox", command=install_go).grid(row = 2, column = 0)
    	Tk.Radiobutton(install, text="Choix 4", variable=boxe_prise, value="Bbox", command=install_go).grid(row = 2, column = 1)
    	Tk.Button(install, text ="APPLIQUER", command=install.destroy).grid(row = 6, column = 1)
    	install.mainloop()
     
    def install_go():
    	print boxe_prise.get()
     
    install()
    (Presque) Tous les exemples de Tkinter commences par from Tkinter import * car ce n'est que des exemples qui n'utilisent que Tkinter, ou du moins d'autres imports qui ne risques pas de poser problème.
    Je préfère bien identifier les objets.

    Dans le second exemple tu remarqueras que je ne donne pas de nom aux Widgets que je n'utilise pas par la suite.
    Pourquoi ? Dans le cadre d'un code simple pas de problème mais dans le cadre d'un code plus complexe c'est source à erreur. Erreur humaine bien sur.

    Bon code.

  5. #5
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonjour,

    @Carto_:
    Dans le code la ligne
    global boxe_prise
    produit l'erreur
    SyntaxError: name 'boxe_prise' is assigned to before global declaration (<pyshell#19>, line 1)
    Tu dois déclarer que la valeur est globale avant de lui affecter une valeur.

    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
    from Tkinter import *
     
     
    def install_go():
    	print boxe_prise.get()
     
     
    def install():
    	global boxe_prise
    	install = Tk()
    	cochez = Label(install, text ="Cochez la Rogue voulue ?")
    	boxe_prise = StringVar(value=False) #Pour qu'il n'y ait aucun choix par defaut
    	radiobutton1 = Radiobutton(install, text="Choix 1", variable=boxe_prise, value="Freebox", command=install_go)
    	radiobutton2 = Radiobutton(install, text="Choix 2", variable=boxe_prise, value="Numericable", command=install_go)
    	radiobutton3 = Radiobutton(install, text="Choix 3", variable=boxe_prise, value="Livebox", command=install_go)
    	radiobutton4 = Radiobutton(install, text="Choix 4", variable=boxe_prise, value="Bbox", command=install_go)
    	button_install = Button(install, text ="APPLIQUER", command=install.destroy)
    	button_install.grid(row = 6, column = 1)
    	radiobutton1.grid(row = 1, column = 0)
    	radiobutton2.grid(row = 1, column = 1)
    	radiobutton3.grid(row = 2, column = 0)
    	radiobutton4.grid(row = 2, column = 1)
    	cochez.grid(row = 0, column = 0)
    	install.mainloop()
     
     
    install()
    @+ et que le Python soit avec toi
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  6. #6
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonjour,

    @Carto_:
    Dans le code la ligne
    global boxe_prise
    produit l'erreur
    SyntaxError: name 'boxe_prise' is assigned to before global declaration (<pyshell#19>, line 1)
    Tu dois déclarer que ta variable est globale avant de lui affecter une valeur.

    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
    from Tkinter import *
     
     
    def install_go():
    	print boxe_prise.get()
     
     
    def install():
    	global boxe_prise
    	install = Tk()
    	cochez = Label(install, text ="Cochez la Rogue voulue ?")
    	boxe_prise = StringVar(value=False) #Pour qu'il n'y ait aucun choix par defaut
    	radiobutton1 = Radiobutton(install, text="Choix 1", variable=boxe_prise, value="Freebox", command=install_go)
    	radiobutton2 = Radiobutton(install, text="Choix 2", variable=boxe_prise, value="Numericable", command=install_go)
    	radiobutton3 = Radiobutton(install, text="Choix 3", variable=boxe_prise, value="Livebox", command=install_go)
    	radiobutton4 = Radiobutton(install, text="Choix 4", variable=boxe_prise, value="Bbox", command=install_go)
    	button_install = Button(install, text ="APPLIQUER", command=install.destroy)
    	button_install.grid(row = 6, column = 1)
    	radiobutton1.grid(row = 1, column = 0)
    	radiobutton2.grid(row = 1, column = 1)
    	radiobutton3.grid(row = 2, column = 0)
    	radiobutton4.grid(row = 2, column = 1)
    	cochez.grid(row = 0, column = 0)
    	install.mainloop()
     
     
    install()
    @+ et que le Python soit avec toi
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

Discussions similaires

  1. Impossible de récupérer la valeur d'un menu déroulant
    Par kyake dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/10/2009, 16h00
  2. Réponses: 2
    Dernier message: 21/11/2008, 12h21
  3. [ODBC] ACCESS - Impossible de récupérer la valeur de @@identity (équivalent mysql_insert_id)
    Par FredFrance21 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/10/2008, 14h40
  4. [AJAX] Impossible de récupérer les valeurs en Post
    Par Tommyl dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/06/2007, 20h30
  5. [PEAR][HTML_QuickForm] Impossible de récupérer les valeurs du formulaire
    Par Mainman dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/05/2007, 12h15

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