Python 是什么导致了这个错误

Python 是什么导致了这个错误,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我试图使图形用户界面,反向用户输入,但有些事情是错误的 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

我试图使图形用户界面,反向用户输入,但有些事情是错误的

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()

  • def reverse(s):
    如果不打算向函数传递任何参数,则不应具有
    s
    。同样,对于
    command=reverse(s)
  • U=Entry(root,textvariable=s)
    如果要直接使用
    访问条目的值,则不需要textvariable。get
    。无论如何,您不能在这里使用
    s
    ,因为您从来没有将StringVar对象分配给
    s
  • returns[:-1]
    返回的值对于用户来说将不可见。如果要显示反转的字符串,则需要将其打印或插入条目或类似内容

结果:


这个错误似乎不言自明。您试图在定义变量
s
之前使用变量
s
。当
s
不存在时,您认为
textvariable=s
在做什么?当您将函数用作按钮命令时,您不能真正返回对象,而是应该修改对象。
Error:   U=Entry(root,textvariable=s)
         NameError: name 's' is not defined
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()