Bonjour Madame, Monsieur,

Je me permets de poster ce message pour solliciter votre aide. Je suis nouveau en python. Pour un projet, je dois utiliser thinker, développement poo (class). Je veux créer une calculatrice graphique afin modifier le code pour mon projet. Je me suis inspiré des tutoriels. Donc il y a fort de chance que vous trouviez des ressemblances. Dans mon cas je souhaite récupérer la valeur émis quand on clique sur le bouton pour pouvoir effectuer des calcules. Dans cet exemple, j'ai juste utilisé pour le bouton7 (btn7) . Lorsque je fais appel à la fonction application1 , il m'indique des erreurs, si vous pouvez éclairé. Je serai reconnaissant. Merci.

cordialement
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
from math import *
from tkinter import *
import sys 
 
class Calcule(object):
    """calcule de valeur """
    def __init__(self):
        self.root = Tk()
        self.root.title("Calcualtrice")
        self.string1 = StringVar()
        self.container = Frame(self.root)
 
 
 
        string2 =  Entry(self.root,font = ('arial', 20,'bold'),textvariable = self.string1,bd = 30, insertwidth = 4, bg = "powder blue", justify = "right").grid(columnspan = 4)
 
 
 
        btn7 = Button(self.root, padx = 16, bd = 8, fg = "black", font = ('arial', 20, 'bold'), text = "7", command = lambda:application1("7")).grid(row =1, column  = 0)
 
        btn8 = Button(self.root, padx = 16, bd = 8, fg = "black", font = ('arial', 20, 'bold'), text ="8").grid(row = 1, column = 1)
 
        btn9 = Button(self.root, padx = 16, bd = 8, fg = "black", font = ('arial', 20,'bold'), text = "9").grid(row =1, column  =  2)
 
        btn_divi = Button(self.root, padx = 16, bd = 8, fg = "black", font =('arial', 20, 'bold'), text ="/").grid(row = 1, column =  3)
 
        btn4 = Button(self.root, padx = 16, bd = 8, fg ='black', font =('arial', 20, 'bold'), text = "4").grid(row = 2, column = 0)
        btn5 = Button(self.root, padx = 16, bd = 8, fg ="black", font = ('arial',20, 'bold'), text = "5").grid(row = 2, column = 1)
        btn6 =  Button(self.root, padx = 16, bd = 8, fg = "black", font = ('arial', 20, 'bold'), text = "6").grid(row = 2, column = 2)
        btn3 = Button(self.root, padx = 16, bd = 8, fg = "black", font =  ('arial', 20, 'bold'), text = "*").grid(row = 2, column = 3)
        btn0 =  Button(self.root, padx = 16, bd = 8, fg = "black", font = ('arial', 20, 'bold'), text = "0").grid(row = 3, column = 0)
        btn1 = Button(self.root, padx = 16, bd = 8, fg = "black", font = ('arial', 20, 'bold'), text = '1').grid(row = 3, column = 1)
        btn2 = Button(self.root, padx= 16, bd = 8, fg = "black", font =  ('arial', 20, 'bold'),text  = '2').grid(row = 3, column = 2)
        btn3  =  Button(self.root, padx= 16, bd = 8, fg = "black", font =  ('arial', 20, 'bold'), text = '3').grid(row =  3, column  = 3)
 
        self.root.mainloop()
 
 
 
        def application1(self, nombre):
             self. valeur1 = valeur1+ str(nombre)
 
 
        def update(self,methode):
            if methode == "add":
                print("bonjour")
            else :
                print("non")

terminal :


python3 calculatrice2.py
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.8/tkinter/__init__.py", line 1883, in __call__
return self.func(*args)
File "calculatrice2.py", line 25, in <lambda>
btn7 = Button(self.root, padx = 16, bd = 8, fg = "black", font = ('arial', 20, 'bold'), text = "7", command = lambda:application1("7")).grid(row =1, column = 0)
NameError: free variable 'application1' referenced before assignment in enclosing scope