from tkinter import * root = Tk() root.geometry("400x400") root.title("Bubble Sort") def printfirst(): get1 = w.get() get2 = e.get() get3 = r.get() get4 = t.get() get5 = y.get() first = Label(root, text= get1 + get2 + get3 + get4 + get5) first.pack() def test(): get1 = w.get() get2 = e.get() get3 = r.get() get4 = t.get() get5 = y.get() if get1 > get2: first.configure(text= get2 + get1 + get3 + get4 + get5) te = Label(root, text="Enter 5 Diffrent Numbers") te.pack() w = Entry(root) get1 = w.get() w.pack() e = Entry(root) get2 = e.get() e.pack() r = Entry(root) get3 = r.get() r.pack() t = Entry(root) get4 = t.get() t.pack() y = Entry(root) get5 = y.get() y.pack() p = Button(root, text="Print Out", command=printfirst) p.pack() gg = Button(root, text="Sort It!", command=test) gg.pack() root.mainloop() The error log: "Exception in Tkinter callback Traceback (most recent call last): File "C:\Python34\lib\tkinter__init__.py", line 1533, in call return self.func(*args) File "C:/Users/lycelab18/Desktop/testt.py", line 29, in test first.configure(text= get2 + get1 + get3 + get4 + get5) NameError: name 'first' is not defined"
4 Réponses :
dans votre test Vous Test () code> Fonction que vous utilisez
first.configure (...) code> avant de définir
premier code> var. p>
première valeur code> définis dans
printFirst () code> n'existe pas dans
test () code> fonction. P>
La variable Un moyen de résoudre ce problème est à Ceci ressemblera à ceci: P> premier code> n'existe que dans le cadre de la fonction
printfirst () code>, cela signifie que vous ne pouvez pas y accéder à partir de la portée du test
) code>.
retour d'abord code> à partir de la fonction
printfirst () code>, enregistrez cette variable, puis transmettez-la comme argument dans la deuxième méthode;
Test (premier) CODE> P>
def printfirst():
get1 = w.get()
get2 = e.get()
get3 = r.get()
get4 = t.get()
get5 = y.get()
first = Label(root, text= get1 + get2 + get3 + get4 + get5)
first.pack()
return first
def test(first):
get1 = w.get()
get2 = e.get()
get3 = r.get()
get4 = t.get()
get5 = y.get()
if get1 > get2:
first.configure(text= get2 + get1 + get3 + get4 + get5)
first = printfirst()
test(first)
Comme l'indique l'erreur, il n'est pas défini d'abord dans def test (): code>
Vous pouvez définir et initialiser cela comme vous l'avez fait dans
def printfirst code>
Vous n'avez pas de variable / objet appelé premier code> dans la fonction
test () code>. Vous devez l'affecter avant de l'utiliser. La façon dont vous faites dans
printFirst () code>. P>