繁体   English   中英

Python Tkinter-使用按钮传递值

[英]Python Tkinter - Passing values with a button

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

variable = str()

def RandomFunction(variable): 
    print (variable) 

EntryBox = Entry(MainWindow, textvariable = variable).pack() 
FunctionCall = Button(MainWindow, text="Enter", command=RandomFunction(variable)) 

似乎在按下按钮时它什么都不打印。 我四处搜索,看来使用lambda可以修复它并允许将(variable)传递给函数,但是在尝试使用lambda variable:variable我仍然无法使它工作。

使用lambda创建一个使用参数调用该函数的函数就可以了(只要您正确执行了该操作即可):

FunctionCall = Button(MainWindow, text="Enter", command=lambda: RandomFunction(EntryBox.get))

Python将对此感到满意,因为lambda不接受任何参数。

您使用.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()

这里的其他答案是可行的,但是就像生活中的许多事情一样,有多种方法可以完成您想做的事情。

您问题中的代码实际上混合了几种从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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM