-1
votes

NameError: Nom 'Premier' n'est pas défini, que puis-je faire?

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"

0 commentaires

4 Réponses :


0
votes

dans votre test Test () Fonction que vous utilisez first.configure (...) avant de définir premier var.

Vous première valeur définis dans printFirst () n'existe pas dans test () fonction.


0 commentaires

0
votes

La variable 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>.

Un moyen de résoudre ce problème est à 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>

Ceci ressemblera à ceci: 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)


0 commentaires

0
votes

Comme l'indique l'erreur, il n'est pas défini d'abord dans def test (): Vous pouvez définir et initialiser cela comme vous l'avez fait dans def printfirst xxx


0 commentaires

0
votes

Vous n'avez pas de variable / objet appelé premier dans la fonction test () . Vous devez l'affecter avant de l'utiliser. La façon dont vous faites dans printFirst () .


0 commentaires