如何通过按钮将参数传递给函数?
variable = str()
def RandomFunction(variable):
print (variable)
EntryBox = Entry(MainWindow, textvariable = variable).pack()
FunctionCall = Button(MainWindow, text="Enter", command=RandomFunction(variable))
按下按钮似乎没有打印任何内容。我一直在搜索,似乎使用lambda
可以修复它并允许(变量)传递给函数但是在尝试lambda variable:variable
之后我仍然无法使其工作。
答案 0 :(得分:1)
使用lambda
创建一个用参数调用函数的函数很好(只要你正确地执行):
FunctionCall = Button(MainWindow, text="Enter", command=lambda: RandomFunction(EntryBox.get))
Python会对此感到满意,因为lambda
不接受任何参数。
答案 1 :(得分:1)
您使用.get()来获取条目的内容。来自effbot页面http://effbot.org/tkinterbook/entry.htm
from Tkinter import *
master = Tk()
e = Entry(master)
e.pack()
e.focus_set()
def callback():
print e.get()
b = Button(master, text="get", width=10, command=callback)
b.pack()
master.mainloop()
答案 2 :(得分:1)
这里的其他答案都有效,但与生活中的很多事情一样,有不止一种方法可以做你想做的事情。
您问题中的代码实际上混合了几种从Entry小部件获取数据的方法。您正在使用textvariable和lambda,但您只需要一个。似乎lambda已被覆盖,所以这里有关于textvariable的快速回答:
首先,您需要将Tkinter字符串类型的变量设置为:
variable = StringVar()
您的条目小部件很好,它已连接到StringVar()。但是,你的按钮不需要lambda,因为你不需要将参数传递给RandomFunction()。
FunctionCall = Button(MainWindow, text='Enter', command=RandomFunction).pack()
最后,你的函数需要一点点返工,因为它不再进行参数,它只会在你的StringVar()上使用.get()方法。称为:
def RandomFunction():
print(variable.get())
您可以在此处阅读有关StringVar()的更多信息:http://effbot.org/tkinterbook/variable.htm