Python如何在函数中获取字符串?

2024-07-04 14:05:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在写一个吊人游戏。使用Tkinter for GUI。你知道吗

如何从函数中获取字符串:

def startgame():
     player21abel=Label(text="    Guess a Letter     ",fg="black").place(x=10,y=60)
     mbutton=Button(text="  Press to summit   ",command=guess).place(x=220,y=100)
     player2=StringVar()
     player2input=Entry(textvariable=player2).place(x=220,y=56)
     test=""
     uetext=utext.get()


def guess():
     test=player2.get()
     test=""
     player2=StringVar
     print (test)

我得到一个错误:

line 16, in guess
test=player2.get()
UnboundLocalError: local variable 'player2' referenced before assignment

我想从player2input获取文本框输入,并在函数guess上处理它。但它不承认它是一个字符串??你知道吗


Tags: 函数字符串texttest游戏forgettkinter
2条回答

必须将其作为参数传递给函数。你知道吗

要在tkinter中执行此操作,请查看以下答案:https://stackoverflow.com/a/6921225/1165441

你所需要做的就是使用一个lambda来调用你想要的参数的函数。你知道吗

您需要重新排列代码,但命令属性如下所示:

command=lambda: guess(paramYouWantToPass)

编辑:我想说@mgilson发布的答案是解决问题的更正确的方法,但是理解如何使用lambdas将参数传递给tkinter命令回调也是您应该理解的。你知道吗

player2guess命名空间中不存在。在函数之间共享数据的典型方法是使用类:

class App(object):
    def __init__(self):
         self.master = Tk()
    def startgame():
         player21abel=Label(self.master, text="    Guess a Letter     ",fg="black")
         player2label.place(x=10,y=60)
         mbutton=Button(self.master, text="  Press to summit   ",command=self.guess)
         mbutton.place(x=220,y=100)
         self.player2=StringVar()
         player2input=Entry(self.master, textvariable=self.player2)
         player2input.place(x=220,y=56)
         test=""
         uetext=utext.get()


    def guess():
         test=self.player2.get()
         test=""
         self.player2=StringVar
         print (test)

然后你就可以按如下方式来处理它:

app = App()
app.startgame()

请注意,您还有许多其他错误,您没有将父小部件传递给标签/条目/按钮,通常应该创建一个小部件,然后在单独的行中使用它的几何管理器。否则您的引用都将是None。e、 g

foo = button(master, ...).grid(...)  # Wrong: foo is None!!!

foo = button(master, ...)
foo.grid(...)  # right, foo is a tkinter Widget.

相关问题 更多 >

    热门问题