如何获取从A到C的返回值?顺便说一句,我没有使用class。
def button:
mylabel = Label(myGui, text = "hi").grid(row = 0, column = 0)
A = B.get()
return A
B = StringVar()
C = ""
myentry = Entry(myGui, textvariable = B).grid(row = 1, column = 0)
Submit = Button(myGui, text = "Submit", command = button).grid(row = 1, column = 1)
发布于 2012-10-27 22:27:08
简短的回答是:你不能。回调不能返回任何东西,因为没有地方可以返回它--除了事件循环,它不会对返回值做任何事情。
在基于事件的应用程序中,您通常要做的是在类上设置属性。或者,如果你是初学者,你可以设置一个全局变量。对于需要长期维护的真实代码来说,使用全局变量并不是一个好主意,但对于实验来说,这是可以的。
因此,例如,由于在您的示例中C
似乎是一个全局变量,因此您将执行如下操作:
def button():
global C
mylabel = Label(myGui, text = "hi").grid(row = 0, column = 0)
A = B.get()
C = A
发布于 2012-10-27 20:02:08
您可以从button
函数中调用C.set
:
def button:
mylabel = Label(myGui, text = "hi").grid(row = 0, column = 0)
A = B.get()
C.set(A)
# return A # return values are useless here
发布于 2017-10-19 23:42:48
老问题,但大多数答案都建议使用全局变量。我不喜欢在我的项目中使用太多的全局变量,所以这是我的解决方案。
在声明Tkinter按钮时,可以使用lambda函数作为命令。这个lambda可以与与您定义的按钮位于同一名称空间中的变量交互。确保在初始化按钮之前定义此变量。
def button():
mylabel = Label(myGui, text = "hi").grid(row = 0, column = 0)
A = B.get()
return A
B = StringVar()
C = ""
myentry = Entry(myGui, textvariable = B).grid(row = 1, column = 0)
Submit = Button(myGui, text = "Submit", command = lambda: C=button()).grid(row = 1, column = 1)
根据您的项目组织,您可能需要将self
作为button
的参数,但概念是相同的。Lambda命令对于将参数传递给按钮命令也很有用。
https://stackoverflow.com/questions/13099908
复制相似问题