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()
错误日志:
“ Tkinter回调中的异常 追溯(最近一次通话): 调用中的文件“ C:\ Python34 \ lib \ tkinter__init __。py”,第1533行 返回self.func(* args) 测试中的文件“ C:/Users/lycelab18/Desktop/testt.py”,第29行 first.configure(文本= get2 + get1 + get3 + get4 + get5) NameError:名称“ first”未定义”
答案 0 :(得分:0)
在test()
函数中,在定义first.configure(...)
变量之前,先使用first
。
在first
函数中不存在在printfirst()
中定义的test()
值。
答案 1 :(得分:0)
变量first
仅存在于函数printfirst()
的范围内,这意味着您不能从test()
的范围内对其进行访问。
一种解决方法是从return first
函数中printfirst()
,保存此变量,然后在第二种方法中将其作为参数传递; test(first)
这看起来像这样:
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)
答案 2 :(得分:0)
错误提示,def test():
中未定义first
您可以像在def printfirst
def test():
get1 = w.get()
get2 = e.get()
get3 = r.get()
get4 = t.get()
get5 = y.get()
# If this is how you want to initialise it
first = Label(root, text= get1 + get2 + get3 + get4 + get5)
first.pack()
if get1 > get2:
first.configure(text= get2 + get1 + get3 + get4 + get5)
答案 3 :(得分:0)
函数first
中没有名为test()
的变量/对象。您需要先分配它,然后再使用它。在printfirst()
中的操作方式。