Python Tkinter - 使用按钮传递值

时间:2014-03-28 20:55:20

标签: python tkinter

如何通过按钮将参数传递给函数?

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之后我仍然无法使其工作。

3 个答案:

答案 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