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 :

Débutant - Mettre une valeur par défaut a Entry [Python 3.X]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Dessinateur projeteur
    Inscrit en
    Octobre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 22
    Par défaut Débutant - Mettre une valeur par défaut a Entry
    Bonjour a tous.

    Je suis débutant, en Python, en Tkinter, et en programmation tout court
    Je viens de faire un tour pour trouver une solution, mais en vain.

    Je cherche a mètre une valeur par défaut sur un Entry.

    Je m'explique, j'ai fait un programme, et je cherche a avoir un interface avec Tkinter. Dans ce programme j'ai plusieurs Entry pour donner des valeurs numériques, qui servent pour un calcul. Or j'aimerais que lorsque j'utilise pas un Entry, il ait une valeur par défaut de 0.

    Comment puis je faire ?

    D'avance Merci.

    Megeon

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonjour,
    L'une des méthodes est d'utiliser une "StringVar":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import tkinter as tk
    fen = tk.Frame()
    fen.pack()
    ma_var = tk.StringVar()
    ma_var.set("Coucou")
    ent = tk.Entry(fen, textvariable=ma_var)
    ent.pack()
    fen.mainloop()
    "ma_var" est accédée par "ma_var.set" et "ma_var.get".

    Clodion

  3. #3
    Membre averti
    Homme Profil pro
    Dessinateur projeteur
    Inscrit en
    Octobre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 22
    Par défaut
    merci, il me manquait, la ligne

    ma_var.set("xx")

    par contre maintenant j'ai un message d'erreur. Could not convert sting o float:

    le plus simple est peut être de mettre le code

    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
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
     
    # -*-coding: utf-8 -*-
    #!/usr/bin/env python  
     
    import os           #permet l'utilisation du script sur Windows
    import tkinter as t #permet l'utilisation d'un interface.
     
     
    liste_des_calcul_cfa = []
    def cfa(): #ouvre une nouvelle fenetre
        fenetre_cfa = t.Tk()
        def nfp():
            fenetre_cfa.withdraw()
            principale()
        def nt():
            fenetre_cfa.withdraw()
            cfa()
        def cont():
            fenetre_cfa.withdraw()
            noeud()
        def calcul():
     
            cat6a = 8
            #hp
            hp2x2_5 = 7.5
            hp2x4 = 10.2
            hp4x2_5 = 10.25
            hp4x4 = 6
     
            #stage22
            stage22 = 6.5
     
            #mutlipaire
            paires2 = 7.9
            paires4 = 9.1
            paires8 = 12.2
            paires12 = 15.2
            paires16 = 17
            paires20 = 20
            paires24 = 22
            paires32 = 24.6
     
            #FO
            fo = 6.4
     
            #SDI
            sdi = 10.1
     
            fenetre_calcul_cfa = t.Tk()
            def calcul_cdc():
                b1 = float(saisie_cat6a.get())
                b2 = float(saisie_HP2x2_5.get())
                b3 = float(saisie_HP2x4.get())
                b4 = float(saisie_HP4x2_5.get())
                b5 = float(saisie_HP4x4.get())
     
                a1 = b1*(cat6a**2)
                a2 = b2*(hp2x2_5**2)
                a3 = b2*(hp2x4**2)
                a4 = b2*(hp4x2_5**2)
                a5 = b2*(hp4x4**2)
     
                liste_des_calcul_cfa.append(a1)
                scfa = sum(liste_des_calcul_cfa[:])
                D = 30/100
                T1 = "50x35"
                T2 = "50x60"
                T3 = "100x60"
                T4 = "150x60"
                T5 = "200x60"
                T6 = "200x110"
                T7 = "300x110"
                T8 = "400x110"
                T9 = "500x110"
     
                if scfa + scfa * D <= 1600:
                    mareponse = str(saisie_cfa.get()) + "=" + T1
                    masection = str(scfa)
                    mataille = str(T1)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
     
                elif scfa + scfa * D <= 2800:
     
                    mareponse = str(saisie_cfa.get()) + "=" + T2
                    masection = str(scfa)
                    mataille = str(T2)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
     
                elif scfa + scfa * D <= 5800:
     
                    mareponse = str(saisie_cfa.get()) + "=" + T3
                    masection = str(scfa)
                    mataille = str(T3)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
     
                elif scfa + scfa * D <= 8800:
     
                    mareponse = sstr(saisie_cfa.get()) + "=" + T4
                    masection = str(scfa)
                    mataille = str(T4)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
     
                elif scfa + scfa * D <= 11800:
     
                    mareponse = str(saisie_cfa.get()) + "=" + T5
                    masection = str(scfa)
                    mataille = str(T5)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
     
                elif scfa + scfa * D <= 21800:
     
                    mareponse = str(saisie_cfa.get()) + "=" + T6
                    masection = str(scfa)
                    mataille = str(T6)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
     
                elif scfa + scfa * D <= 32800:
     
                    mareponse = str(saisie_cfa.get()) + "=" + T7
                    masection = str(scfa)
                    mataille = str(T7)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
     
                elif scfa + scfa * D <= 43800:
     
                    mareponse = str(saisie_cfa.get()) + "=" + T8
                    masection = str(scfa)
                    mataille = str(T8)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
     
                elif scfa + scfa * D <= 54800:
     
                    mareponse = str(saisie_cfa.get()) + "=" + T9
                    masection = str(scfa)
                    mataille = str(T9)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
            calc_cdc = calcul_cdc()
            label_cdc = t.Label(fenetre_calcul_cfa, text = calc_cdc["mareponse"])
            label_cdc.pack()
            fenetre_calcul_cfa.mainloop()
     
     
        fenetre_cfa.geometry("250x250") 
        label_cfa = t.Label(fenetre_cfa, text = "CFA")
        label_cfa.pack()
     
        label_terminal = t.Label(fenetre_cfa, text = "Nommez le terminal")
        label_terminal.pack()
        nom_terminal_cfa = t.StringVar()
        saisie_cfa = t.Entry(fenetre_cfa, textvariable = nom_terminal_cfa, width = 30)
        saisie_cfa.pack()
     
        label_cat6a = t.Label(fenetre_cfa, text = "Nombre de cat6a")
        label_cat6a.pack()
        nb_cat6a = t.StringVar()
        nb_cat6a.set("0")
        saisie_cat6a = t.Entry(fenetre_cfa, textvariable = nb_cat6a, width = 30)
        saisie_cat6a.pack()
     
        label_HP2x2_5 = t.Label(fenetre_cfa, text = "Nombre de HP2x2,5")
        label_HP2x2_5.pack()
        nb_HP2x2_5 = t.StringVar()
        nb_HP2x2_5.set("0")
        saisie_HP2x2_5 = t.Entry(fenetre_cfa, textvariable = nb_HP2x2_5, width = 30)
        saisie_HP2x2_5.pack()
     
        label_HP2x4 = t.Label(fenetre_cfa, text = "Nombre de HP2x4")
        label_HP2x4.pack()
        nb_HP2x4 = t.StringVar()
        nb_HP2x4.set("0")
        saisie_HP2x4 = t.Entry(fenetre_cfa, textvariable = nb_HP2x4, width = 30)
        saisie_HP2x4.pack()
     
        label_HP4x2_5 = t.Label(fenetre_cfa, text = "Nombre de HP4x2,5")
        label_HP4x2_5.pack()
        nb_HP4x2_5 = t.StringVar()
        nb_HP4x2_5.set("0")
        saisie_HP4x2_5 = t.Entry(fenetre_cfa, textvariable = nb_HP4x2_5, width = 30)
        saisie_HP4x2_5.pack()
     
        label_HP4x4 = t.Label(fenetre_cfa, text = "Nombre de HP4x4")
        label_HP4x4.pack()
        nb_HP4x4 = t.StringVar()
        nb_HP4x4.set("0")
        saisie_HP4x4 = t.Entry(fenetre_cfa, textvariable = nb_HP4x4, width = 30)
        saisie_HP4x4.pack()
     
        bouton_fermer = t.Button(fenetre_cfa, text = "fermer", command = fenetre_cfa.quit) 
        bouton_retour = t.Button(fenetre_cfa, text = "retour", command = nfp)
        bouton_nouveau_termial = t.Button(fenetre_cfa, text = "Nouveau Terminal", command = nt)
        bouton_continuer = t.Button(fenetre_cfa, text = "Continuer", command = cont)    
        bouton_calcul = t.Button(fenetre_cfa, text = "Calcul", command = calcul)
     
        bouton_fermer.pack()
        bouton_retour.pack()
        bouton_nouveau_termial.pack()
        bouton_continuer.pack()
        bouton_calcul.pack()
        fenetre_cfa.mainloop()
     
     
     
    def cfo(): #ouvre une nouvelle fenetre
        fenetre_cfo = t.Tk() 
        def nop():
            fenetre_cfo.withdraw()
            principale()
        label_cfo = t.Label(fenetre_cfo, text = "CFO")
        label_cfo.pack()
        fermer = t.Button(fenetre_cfo, text = "fermer", command = fenetre_cfo.quit) 
        retour = t.Button(fenetre_cfo, text = "retour", command = nop)
     
        fermer.pack()
        retour.pack()
        fenetre_cfo.mainloop()
     
     
    def principale():
        fenetre = t.Tk ()
        fenetre.title("CDC_CALCUL")
        fenetre.geometry("200x150")
        label = t.Label(fenetre, text="CDC_calcul")
        label.pack()
        def nf():
            fenetre.withdraw() # permet de fermer la fenetre en cours
            cfa()
        def no():
            fenetre.withdraw()
            cfo()
     
        bouton_cfa = t.Button(fenetre, text = "CFA", command = nf)
        bouton_cfo = t.Button(fenetre, text = "CFO", command = no)
        fermer = t.Button(fenetre, text = "fermer", command = fenetre.quit)
     
        bouton_cfa.pack()
        bouton_cfo.pack()
        fenetre.mainloop()
     
     
     
    principale()
     
     
     
    # On met en pause le système (Windows)
     
    os.system("pause")

  4. #4
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par Megeon Voir le message
    par contre maintenant j'ai un message d'erreur. Could not convert sting o float:
    Bonsoir,
    Quelques petites remarques:
    - Il est vraiment déconseillé de créer de multiples instances de Tk. Il est nettement conseillé de recourir à des fenêtres modales ("tk.Toplevel"). Ainsi toutes les variables sont disponibles. Dans le script, étant donné que beaucoup d'instances de Tk sont initialisées, et qu'elles sont masquées, cela peut sans doutes poser des problèmes.
    - "withdraw" ne supprime pas une fenêtre: elle la masque! Elle est récupérable par "deiconify"
    - les structures de données sont très utilisées en Python et rendent les scripts beaucoup plus lisibles (listes, dictionnaires, set, tuples…)

    Enfin, ce serait bien d'avoir le message d'erreur complet (ne serait-ce que pour avoir une indication de l'endroit où se situe l'erreur)!

    Clodion

    PS: est-ce nécessaire de mettre le système en pause? (Je ne suis pas sous windows)
    PS2: N'y aurait-il pas manière de condenser un peu ces codes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                elif scfa + scfa * D <= 32800:
     
                    mareponse = str(saisie_cfa.get()) + "=" + T7
                    masection = str(scfa)
                    mataille = str(T7)
                    return {"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : saisie_cfa, "mataille" : mataille}
    Déjà: "scfa + scfa*D" est utilisé neuf fois? Une variable serait, peut-être, plus pertinente?
    L'unique chose qui est modifié est, ici, la valeur de la relation ainsi que la avriable "T": pourquoi ne pas faire quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> T = ["50x35", "50x60", "100x60", "150x60", "200x60", "200x110", "300x110", "400x110", "500x110"]
    >>> test = 22000 + 22000*30/100
    >>> test
    28600.0
    >>> inf = [1600, 2800, 5800, 8800, 11800, 21800, 32800, 43800, 54800]
    >>> for i in range(len(inf)):
    	if test<=inf[i]: break
     
     
    >>> mareponse = "XXX" + "=" + T[i]
    >>> masection = str(22000)
    >>> mataille = T[i]
    >>> print({"mareponse" : mareponse, "masection" : masection, "saisie_cfa" : "sais-pas", "mataille" : mataille})
    (C'est juste pour le principe)

  5. #5
    Membre averti
    Homme Profil pro
    Dessinateur projeteur
    Inscrit en
    Octobre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 22
    Par défaut
    Bonjours Clodion

    message d'erreur en PJ

    Pour le système en pause, c'est se qu'il a été recommandé pour le script python !(lorsque j’apprenais les tout débuts) Mais si un utilisateur Windows pourrais en dire plus !

    Ensuite je sais que mon code de base pourrais être grandement amélioré, mais je me suis pas encore pencher la dessus, j'étais plutôt concentrer sur le fonctionnement du code, je sais que je pourrais ajouter quelque classe ect... mais j'ai pas encore aborder le sujet dans mon apprentissage.

    Merci en tout cas de ton aide !
    Images attachées Images attachées  

  6. #6
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par Megeon Voir le message
    message d'erreur en PJ
    Bonjour,
    Personnellement, je n'ai cette erreur que lorsque je n'entre rien dans le champ concerné, que j'entre un décimal avec une virgule (et non un point) ou simplement que j'entre un texte.

    Citation Envoyé par Megeon Voir le message
    Ensuite je sais que mon code de base pourrais être grandement amélioré, mais je me suis pas encore pencher la dessus, j'étais plutôt concentrer sur le fonctionnement du code, je sais que je pourrais ajouter quelque classe ect... mais j'ai pas encore aborder le sujet dans mon apprentissage.
    Oui, sans doutes.
    Il est cependant beaucoup aisé de comprendre un script et de s'y retrouver lorsqu'il est plus clair!
    En particulier pour ceux qui sont amenés à le relire.
    Ici, ce n'est pas un sujet de classes: le script n'a pas de commentaires; et de très nombreuses lignes sont condensables (c'est plus au niveau de la conception: perte de temps important à tout recopier ou réécrire avec des risques d'oublis et fautes de frappes).
    Et je me répète, mais ouvrir de nombreuses instance de "tkinter" est vraiment une très très mauvaise idée.

    PS: je ne sais pas si cela a été corrigé, mais le bouton "fermer" de la fonction principale n'est pas intégré dans le gestionnaire de fenêtres (il n'y a pas de "fermer.pack()")

    Clodion

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/10/2009, 09h06
  2. Mettre une valeur par défaut dans un input type='file'
    Par fab76000 dans le forum Langage
    Réponses: 2
    Dernier message: 27/01/2009, 19h59
  3. Réponses: 10
    Dernier message: 04/11/2008, 14h30
  4. Réponses: 4
    Dernier message: 05/06/2007, 09h16
  5. mettre une valeur par défaut
    Par oolon dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 17h20

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