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

Python Discussion :

tkinter - réutiliser une "Entry" dans une fonction [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    ingénieur BTP
    Inscrit en
    Novembre 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur BTP

    Informations forums :
    Inscription : Novembre 2022
    Messages : 6
    Points : 5
    Points
    5
    Par défaut tkinter - réutiliser une "Entry" dans une fonction
    Bonjour,

    Voici un problème qui m'a occupé une bonne partie de l'après midi, j'ai trouvé quelques pistes sur ce forum mais qui n'ont pas abouties, et je ne comprends pas pourquoi...

    Voici un extract "réduit" du code de mon appli que j'ai adapté par soucis de lisibilité. Je voudrais que la valeur de mon Entry() "test_entry" soit réutilisée dans les fonctions appelées dans mes boutons.

    Soit je mets un ".get()" à mon entrée en ligne 20 et on me sort directement l'erreur : AttributeError: 'NoneType' object has no attribute 'get'
    soit je n'en mets pas, la fenetre s'ouvre mais les boutons ne fonctionnent pas et j'ai l'erreur TypeError: float() argument must be a string or a real number, not 'NoneType'

    Je comprends donc que mon entry (réutilisée en get() ou non) est "vide", mais je ne comprends pas.

    Please help ?

    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
    from tkinter import *
     
    window1 = Tk()
    window1.title("test")
    window1.geometry("1000x600")
    window1.config(background='#4d4644')
     
    variabletest = 0
     
     
    def incrementer():
        global variabletest
        global test_entry_var
        variabletest = float(test_entry_var) + 100
     
     
    default_entry = StringVar()
    default_entry.set("1")
    test_entry = Entry(window1, textvariable=default_entry, bg='#2c2827', fg='white', width=10).grid(row=0, column=0)
    test_entry_var = test_entry.get()
     
    Button(window1, text="buy", command=incrementer).grid(row=1, column=0)
     
    labelsortie = Label(text="réponse : " + str(variabletest) + "test_entry= " + str(test_entry_var))
    labelsortie.grid(row=1, column=1)
     
     
    def maj():
        global test_entry_var
        labelsortie['text'] = "réponse à jour : " + str(variabletest) + " test_entry=" + str(test_entry_var)
     
     
    Button(window1, text="MAJ", command=maj).grid(row=2, column=1)
     
    window1.mainloop()

  2. #2
    Futur Membre du Club
    Homme Profil pro
    ingénieur BTP
    Inscrit en
    Novembre 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur BTP

    Informations forums :
    Inscription : Novembre 2022
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    pardon je me rends compte que je n'ai pas posté au bon endroit... C'est parti dans le bon forum : https://www.developpez.net/forums/d2.../#post11892837

    A supprimer et désolé

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    Sinon le problème c'est que test_entry n'est pas une référence a ton entry mais le résultat de l'opération grid() sur cet entry, or grid renvoie None Donc il faut diviser ta ligne 19 en 2

  4. #4
    Futur Membre du Club
    Homme Profil pro
    ingénieur BTP
    Inscrit en
    Novembre 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur BTP

    Informations forums :
    Inscription : Novembre 2022
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    oui en effet on me l'a signalé sur le topic que j'ai refait à la bonne place
    merci

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

Discussions similaires

  1. Réutiliser une fonction dans une autre
    Par MarlyM dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2016, 22h02
  2. Solution simple pour développer ou réutilise une fonction de recherche sur des BDs
    Par geforce dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 18/04/2010, 19h12
  3. réutiliser une fonction
    Par morgan47 dans le forum Langage
    Réponses: 5
    Dernier message: 13/10/2009, 21h30
  4. Réutiliser une fonction
    Par Serendipity dans le forum Langage
    Réponses: 4
    Dernier message: 27/10/2008, 18h20
  5. Réponses: 8
    Dernier message: 10/01/2007, 21h10

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