.insert / .delete tkinter
Fermé
Momo
-
Modifié le 22 mars 2022 à 15:05
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 8 avril 2022 à 16:56
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 8 avril 2022 à 16:56
A voir également:
- Tkinter .delete
- Just delete me - Guide
- Hiberfil.sys delete - Guide
- *#9900# delete dumpstate/logcat ✓ - Forum Samsung
- Delete cached standalone update binary ✓ - Forum Matériel & Système
- Kismia delete account - Forum Réseaux sociaux
3 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 22 mars 2022 à 15:06
Modifié le 22 mars 2022 à 15:06
Bonjour,
À mon avis, le souci, c'est que lorsque tu exécutes cette instruction,
A part ça, l'indentation étant importante en Python, il faut afficher ton code avec les balises de code:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ecran.insert(10, operateur) AttributeError: 'NoneType' object has no attribute 'insert'
À mon avis, le souci, c'est que lorsque tu exécutes cette instruction,
Ecrann'est pas connu (il est égal à
None, d'après le message d'erreur).
A part ça, l'indentation étant importante en Python, il faut afficher ton code avec les balises de code:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
Modifié le 22 mars 2022 à 15:12
Modifié le 22 mars 2022 à 15:12
Bonjour,
Merci de soigner l'orthographe, la plupart des navigateurs ont un correcteur orthographique.
Il faut passer
... pour en disposer dans la fonction appelée (ici
Autre remarques :
Bonne chance
Merci de soigner l'orthographe, la plupart des navigateurs ont un correcteur orthographique.
Il faut passer
Ecranen paramètre de tes callbacks :
B0 = Button( fen, text="0", width=3, height=2, bg="pink", fg="black", command=(lambda: bouton_click(0, Ecran)) )
... pour en disposer dans la fonction appelée (ici
bouton_click) :
def bouton_click(nbre, ecran): operateur = operateur + str(nbre) ecran.insert(10, operateur)
Autre remarques :
- pour suivre les conventions python,
Ecran
devrait s'appelerecran
(plus généralement les noms de variables sont en minuscules, les constantes en majuscules, et les noms de classe en camel case); - évite le mot clé
global
, généralement c'est une mauvaise idée ;
Bonne chance
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
>
Momo
Modifié le 8 avril 2022 à 16:56
Modifié le 8 avril 2022 à 16:56
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 24 mars 2022 à 14:50
Modifié le 24 mars 2022 à 14:50
Bonjour Mamie,
évite le mot clé global, généralement c'est une mauvaise idée
C'est vrai, mais peut on, pour éviter ça, utiliser ce genre de code ? :
évite le mot clé global, généralement c'est une mauvaise idée
C'est vrai, mais peut on, pour éviter ça, utiliser ce genre de code ? :
class G(): ''' classe pour variables globales ''' toto = 0 def une_fonction(): G.toto = 10 .....
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
24 mars 2022 à 15:32
24 mars 2022 à 15:32
Dans le cas présent, je pense que le plus simple serait de créer une classe (disons
Voici à quoi pourrait ressembler le code (je n'ai fait qu'un bouton) :
Calculatrice) dans laquelle on stocke les pointeurs sur les différents boutons et l'attribut de classe
operator.
Voici à quoi pourrait ressembler le code (je n'ai fait qu'un bouton) :
from tkinter import * class Calculatrice(Tk): def __init__(self): super().__init__() self.geometry("200x240") # Définition de la fenêtre self.title("Calculatrice v1.0") # Titre de la calculatrice self["bg"]= "#ffddbd" # Couleur de la fenêtre self["relief"] = "raised" # Profondeur de la fenêtre self.operator = "" self.ecran = Entry(self, width=28, bg ="black", fg="white", relief=SUNKEN, bd=5) self.ecran.place(x=9, y=8) self.b1 = Button( self, text="1", width=3, height=2, bg="pink", fg="black", command=(lambda: self.bouton_click(1)) ) self.b1.place(x=10, y=40) # Bouton 1 # ... def bouton_click(self, data): print("click %r %r" % (self.operator, data)) calculatrice = Calculatrice() calculatrice.mainloop()