是什么导致了错误

时间:2017-11-21 14:53:57

标签: python python-3.x tkinter

我正在尝试制作可以反转用户输入的GUI,但是出了点问题

from tkinter import *
from tkinter.ttk import *

def reverse(s):
    s=U.get()
    return s[::-1]

root=Tk(className="Reverse your text")

la=Label(root, text="Enter text to reverse")
la.pack()

U=Entry(root,textvariable=s)
U.pack()

BT=Button(root, text="reverse", command=reverse(s))
BT.pack()

root.mainloop()

Error:   U=Entry(root,textvariable=s)
         NameError: name 's' is not defined

1 个答案:

答案 0 :(得分:2)

    如果您不打算将任何参数传递给函数,则
  • def reverse(s):不应该有s。同样适用于command=reverse(s)
  • 如果您要直接使用U=Entry(root,textvariable=s)访问条目的值,则
  • .get不需要textvariable。无论如何,你不能在这里使用s,因为你从未向s分配一个StringVar对象。
  • return s[::-1]返回的值将不会以任何方式显示给用户。如果要显示反转的字符串,则需要将其打印或插入到条目中,或者类似。

from tkinter import *
from tkinter.ttk import *

def reverse():
    s=U.get()
    U.delete(0, END)
    U.insert(0,s[::-1])

root=Tk(className="Reverse your text")

la=Label(root, text="Enter text to reverse")
la.pack()

U=Entry(root)
U.pack()

BT=Button(root, text="reverse", command=reverse)
BT.pack()

root.mainloop()

结果:

enter image description here