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

Programmation multimédia/Jeux Python Discussion :

Retour d'une valeur de radio-boutons grâce à un bouton simple - tkinter


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2021
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Retour d'une valeur de radio-boutons grâce à un bouton simple - tkinter
    Bonjour,
    Je suis sur un projet de jeu des petits chevaux qui demande dans le menu le nombre de joueurs et donc adapter tout le reste du programme en fonction de ce nombre.
    J'ai fait plusieurs classes et je les appelle dans mon main. Je voudrait récupérer les valeurs d'un radio-bouton dans le main sachant que les radio-boutons sont dans une classe, tout en validant ce choix avec un bouton "Valider".
    Un simple return ne fonctionne pas et un print me servirait à rien.

    Voici ma classe avec les radio-boutons :

    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
    class Bouton(Frame):
        def __init__(self, master=None):
            super().__init__(master)
            self.master = master
            self.pack()
            self.bouton()
     
        def bouton(self):
            value = IntVar()
            value.set(2)
            self.bouton1 = Radiobutton(self, text="2 Joueurs", variable=value, value=2)
            self.bouton2 = Radiobutton(self, text="3 Joueurs", variable=value, value=3)
            self.bouton3 = Radiobutton(self, text="4 Joueurs", variable=value, value=4)
            self.bouton1.pack()
            self.bouton2.pack()
            self.bouton3.pack()
            retour = value.get()
            print(retour)
    Mon bouton valider est dans une autre classe mais ce n'est pas un soucis de le changer

    Et j'appelle dans le main de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fenetre = Tk()
    fenetre.geometry("500x400")
    app = Titre.Titre(master=fenetre)
    app = Choix_Joueurs.Bouton(master=fenetre)
    app = Boutons.Valider(master=fenetre)
    app = Boutons.Quitter(master=fenetre)
    app.mainloop()
    Je vous remercie d'avance de votre temps passé.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 277
    Points : 36 762
    Points
    36 762
    Par défaut
    Salut,

    Pour récupérer le choix de l'utilisateur, il suffit de lire la valeur de la variable (tk) associée au Radiobutton.
    Encore faut-il attendre qu'il ait pu choisir quelque chose!

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2021
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'arrive récupérer la valeur comme il faut en fonction de du radio-bouton avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        def retour1():
            retour = value.get()
            print(retour)
            fenetre.destroy()
            nom()
     
     
        bouton1 = Radiobutton(fenetre, text="2 Joueurs", variable=value, value=2)
        bouton2 = Radiobutton(fenetre, text="3 Joueurs", variable=value, value=3)
        bouton3 = Radiobutton(fenetre, text="4 Joueurs", variable=value, value=4)
     
        boutonValider = Button(fenetre, text="Valider", command=retour1)
    Mais je voulais faire un programme orienté objet pour simplifier le code du main et que tout soit plus lisible, donc autrement dit séparer les éléments que j'affiche sur les fenêtre et juste faire appel aux bonnes fonctions aux bons moments. Donc renvoyer la valeur du radio-bouton choisi pour que je puisse intégrer la valeur dans d'autres fonctions qui vont déterminer la création du plateau.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 277
    Points : 36 762
    Points
    36 762
    Par défaut
    Salut,

    Citation Envoyé par Rambo21 Voir le message
    Donc renvoyer la valeur du radio-bouton choisi pour que je puisse intégrer la valeur dans d'autres fonctions qui vont déterminer la création du plateau.
    Je ne comprends pas trop ce que vous racontez.

    Le fait est que maintenant, le callback/fonction "retour1" affiche la valeur associée à la variable tk value. Et si d'autres fonctions/méthodes doivent accéder à cette valeur, il va peut être falloir en faire un attribut d'instance.

    Vous pouvez aussi regarder ce que savent faire les variables tk et associer un tas de callback qui seront appelés lorsque la valeur de la variable change.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2021
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    Le fait est que maintenant, le callback/fonction "retour1" affiche la valeur associée à la variable tk value. Et si d'autres fonctions/méthodes doivent accéder à cette valeur, il va peut être falloir en faire un attribut d'instance.

    Vous pouvez aussi regarder ce que savent faire les variables tk et associer un tas de callback qui seront appelés lorsque la valeur de la variable change.

    - W
    J'ai vu qu'il y avait la fonction callback mais j'ai cherché aussi son manuel et je ne vois toujours pas comment l'utiliser ou en tout cas avec un avec un exemple plus simpliste, de plus quand vous dites "variable tk" vous parlez bien des variables que j'utilise dans les fonctions de tkinter ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 277
    Points : 36 762
    Points
    36 762
    Par défaut
    Salut,

    Citation Envoyé par Rambo21 Voir le message
    J'ai vu qu'il y avait la fonction callback mais j'ai cherché aussi son manuel et je ne vois toujours pas comment l'utiliser
    Vous l'utiliser "comme il faut". Le problème que (vous semblez avoir) est que çà vous impose des contraintes (comment coder avec cela?)... et que vouloir partir avec des classes et de la POO sans y avoir réfléchi n'aide pas: à vous de trouver le chemin à suivre pour apprendre ce qui est nécessaire à ce que vous voulez faire.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2021
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Vous l'utiliser "comme il faut". Le problème que (vous semblez avoir) est que çà vous impose des contraintes (comment coder avec cela?)... et que vouloir partir avec des classes et de la POO sans y avoir réfléchi n'aide pas: à vous de trouver le chemin à suivre pour apprendre ce qui est nécessaire à ce que vous voulez faire.

    - W
    Avant d'avoir commencé à faire ma POO j'ai justement codé sans et tout marche comme je le souhaite, donc je suis obligé de passer par la POO pour pouvoir rajouter les programmes de la personne avec qui je suis mais aussi dans le cadre de mes études et du barème de notation sur lequel nous serons noté qui implique un code propre.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 277
    Points : 36 762
    Points
    36 762
    Par défaut
    Salut,

    Citation Envoyé par Rambo21 Voir le message
    je suis obligé de passer par la POO pour pouvoir rajouter les programmes de la personne avec qui je suis
    Quelque part, c'est votre problème, pas un problème tkinter!
    Si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import tkinter as tk
     
    root = tk.Tk()
     
    value = tk.StringVar(value=2)
     
    for n in range(2, 5):
        w = tk.Radiobutton(root, text=f"{n} Joueurs", variable=value, value=n)
        w.pack()
     
    tk.Label(root, textvariable=value).pack()
    tk.mainloop()
    la valeur passe bien des Radiobutton au Label, ce qui est une façon de faire "discuter" des objets entre eux comme d'autres.

    Après si vous voulez utiliser des classes et de la POO sans trop savoir comment "structurer" votre code...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Choix d'une valeur modifie des boutons radios
    Par hyper123 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2013, 09h43
  2. récupérer une valeur depuis un bouton radio
    Par masterPage dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/02/2010, 11h18
  3. Incrementation d'une valeur par un bouton
    Par saebakun dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/03/2008, 07h37
  4. recuperer une valeur d'un bouton radio
    Par Mimosa777 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 05/03/2008, 18h04
  5. Retour d'une valeur Null
    Par fragmonster dans le forum Services Web
    Réponses: 6
    Dernier message: 23/11/2007, 22h48

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