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>