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 :

Bouton radio non affecté [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Bouton radio non affecté
    Bonjour à tous grands développeurs python que vous êtes!

    J'ouvre une discussion car je suis tombé sur un petit problème...

    Je développe actuellement un logiciel permettant de calculer un coefficient de convection en fonction de la température et de la pression. Mon code fonctionne bien mais se limite au dialogue avec la console. J'ai voulu le rendre plus digeste en créant une interface graphique et là il y a un problème... Voici le code en question:

    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
    import os
    import pdb
     
     
    from tkinter import *
     
    def valide_1():
      def valide_2():
        pression=float(pression_saisie.get())  
        temperature=float(temperature_saisie.get())
        diam=float(diam_saisie.get())
        debit=float(debit_saisie.get())
        print(pression,temperature,diam,debit)
     
      def valide_3():
        pression=float(pression_saisie.get())  
        temperature=float(temperature_saisie.get())
        diam=float(diam_saisie.get())
        deltaT=float(deltaT_saisie.get())
        orientation=choix_orient.get()
        #pdb.set_trace()
        print(pression,temperature,diam,deltaT,choix_orient.get())  
     
     
      if choix_type.get()==1:
        fenetre_2=Tk()
        pression_saisie=StringVar()
        temperature_saisie=StringVar()
        diam_saisie=StringVar()
        debit_saisie=StringVar()
        #Première donnée d'entrée la pression
        message_pression=Label(fenetre_2,text="Veuillez saisir la pression (bar):")
        pression_saisie=Entry(fenetre_2,textvariable=pression_saisie,width=30)
     
        #Deuxième donnée d'entrée la temperature
        message_temperature=Label(fenetre_2,text="Veuillez saisir la temperature (°C):")
        temperature_saisie=Entry(fenetre_2,textvariable=temperature_saisie,width=30)
     
        #Troisième donnée d'entrée le diamètre
        message_diam=Label(fenetre_2,text="Veuillez saisir le diamètre (m):")
        diam_saisie=Entry(fenetre_2,textvariable=diam_saisie,width=30)
     
        #Quatrième donnée d'entrée le débit
        message_debit=Label(fenetre_2,text="Veuillez saisir le debit (kg/s):")
        debit_saisie=Entry(fenetre_2,textvariable=debit_saisie,width=30)
     
        # Bouton valider
        bouton_valide_2=Button(fenetre_2,text="Valider",command=valide_2)
     
        # Disposition dans la fenetre
        message_pression.grid(row=1,column=1)
        pression_saisie.grid(row=1,column=3)
        message_temperature.grid(row=2,column=1)
        temperature_saisie.grid(row=2,column=3)
        message_diam.grid(row=3,column=1)
        diam_saisie.grid(row=3,column=3)
        message_debit.grid(row=4,column=1)
        debit_saisie.grid(row=4,column=3)
        bouton_valide_2.grid(row=5,column=2)
        fenetre_1.destroy()
        fenetre_2.mainloop()
      else:
        fenetre_3=Tk()
        pression_saisie=StringVar()
        temperature_saisie=StringVar()
        diam_saisie=StringVar()
        deltaT_saisie=StringVar()
        choix_orient=IntVar()
     
        #Première donnée d'entrée la pression
        message_pression=Label(fenetre_3,text="Veuillez saisir la pression (bar):")
        pression_saisie=Entry(fenetre_3,textvariable=pression_saisie,width=30)
     
        #Deuxième donnée d'entrée la temperature
        message_temperature=Label(fenetre_3,text="Veuillez saisir la temperature (°C):")
        temperature_saisie=Entry(fenetre_3,textvariable=temperature_saisie,width=30)
     
        #Troisième donnée d'entrée le diamètre
        message_diam=Label(fenetre_3,text="Veuillez saisir le diamètre (m):")
        diam_saisie=Entry(fenetre_3,textvariable=diam_saisie,width=30)
     
        #Quatrième donnée d'entrée la deltaT
        message_deltaT=Label(fenetre_3,text="Veuillez saisir la delta T (°C):")
        deltaT_saisie=Entry(fenetre_3,textvariable=deltaT_saisie,width=30)
     
        #Cinquième donnée d'entrée l'orientation: 
        orientation_1=Radiobutton(fenetre_3,text="Horizontale",variable=choix_orient,value=1)
        orientation_2=Radiobutton(fenetre_3,text="Verticale",variable=choix_orient,value=2)
     
        # Bouton valider
        bouton_valide_3=Button(fenetre_3,text="Valider",command=valide_3)
     
        # Disposition dans la fenetre
        message_pression.grid(row=1,column=1)
        pression_saisie.grid(row=1,column=3)
        message_temperature.grid(row=2,column=1)
        temperature_saisie.grid(row=2,column=3)
        message_diam.grid(row=3,column=1)
        diam_saisie.grid(row=3,column=3)
        message_deltaT.grid(row=4,column=1)
        deltaT_saisie.grid(row=4,column=3)
        orientation_1.grid(row=5,column=1)
        orientation_2.grid(row=5,column=3)
        bouton_valide_3.grid(row=6,column=2)
        fenetre_1.destroy()
        fenetre_3.mainloop()
     
    fenetre_1=Tk()
    choix_type=IntVar()
    type_convec1=Radiobutton(fenetre_1,text="Forcee",variable=choix_type,value=1)
    type_convec2=Radiobutton(fenetre_1,text="Naturelle",variable=choix_type,value=2)
    bouton_valide_1=Button(fenetre_1,text="Valider",command=valide_1)
    type_convec1.grid(row=1,column=1)
    type_convec2.grid(row=1,column=3)
    bouton_valide_1.grid(row=2,column=2)    
    fenetre_1.mainloop()
    Donc je créé une première fenêtre avec deux bouton radio. Suivant la valeur affecté par ce bouton radio une fenêtre différente s'ouvre. La fenêtre 2 (relative au bouton radio "Forcee") fonctionne très bien elle me print bien les bonnes valeurs. Ce n'est pas le cas de la fenêtre3... Celle-ci à la différence de la fenêtre 2 possède deux boutons radio et lorsque l'on clique sur "Valider" on remarque que python me print 0 comme valeur retournée sur les bouton radio... Je n'arrive pas à comprendre pourquoi :s.

    J'espère avoir été clair dans la présentation de mon problème et merci de votre future aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Salut,

    Dans votre code, il ne devrait y avoir qu'un seul Tk().
    Les fenêtres secondaires devant être des Toplevel.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Oh mon dieu ça marche!

    Un grand merci!

    Mais du coup un nouveau problème survient: en utilisant des Toplevel la première fenêtre ne peut être détruite sinon mes fenêtres filles ne poperont pas. Je suppose qu'il n'y a pas de moyen pour palier à cela?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Citation Envoyé par akilafote Voir le message
    Mais du coup un nouveau problème survient: en utilisant des Toplevel la première fenêtre ne peut être détruite sinon mes fenêtres filles ne poperont pas. Je suppose qu'il n'y a pas de moyen pour palier à cela?
    Il faut apprendre à construire des fenêtres de dialogue avec tkinter. Vous avez un tuto. qui vous explique comment çà fonctionne.
    Une grosse partie du code correspondant est dans le module tkinter.simpledialog (mais il faut le lire car il y a de petites différences).

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Très bien je vais regarder tous ça!

    Merci pour tout

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

Discussions similaires

  1. [MySQL] bouton radio non coché comparaison de 2 arrays
    Par jeanduri dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/07/2017, 09h07
  2. Boutons radio non cochés
    Par philippef dans le forum Langage
    Réponses: 8
    Dernier message: 26/06/2008, 20h23
  3. alerte boutons radio non coché
    Par i_need_to_know dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/09/2007, 17h05
  4. [XHTML] Bouton radio non coché sous IE
    Par navis84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 02/08/2006, 14h03
  5. Valeur d'un groupe de boutons radio non sélectionnés ??
    Par michaelbob dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/11/2005, 16h27

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