python绑定函数到一个按钮[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python绑定函数到一个按钮[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我试图将一个函数绑定到一个按钮,以便只在单击按钮时调用它。我知道有可能使用lambda,但问题是我必须通过函数传递变量,因此我不能使用lambda。
下面的代码试图使用按钮的绑定方法,但这是直觉的,它不起作用:
from tkinter import *
root = Tk()
variable = StringVar()
entry = Entry(root, textvariable=variable, width=10)
entry.pack()
def print_something(event, n):
print(n) # I know it is supposed to be indented ;)
btn = Button(root, text='print something')
btn.bind('<Button-1>', print_something(variable))
btn.pack()
root.mainloop()
答案
如果我理解你的问题,你正在寻找一种方法来使用lambda
表达式。以下是步骤:
Set编码为variable
的值:variable.set(2)
从该函数中删除事件参数。
Get通过使用代码函数打印的值作为按钮方法的回调:
有约束力:
修改您的btn
代码如下:
btn.bind('<Button-1>', lambda a: print_something(variable.get()))
码:
from tkinter import *
root = Tk()
variable = StringVar()
variable.set(2)
entry = Entry(root, textvariable=variable, width=10)
entry.pack()
def print_something(n):
print(n)
btn = Button(root, text='print something')
btn.bind('<Button-1>', lambda a: print_something(variable.get()))
btn.pack()
root.mainloop()
没有约束力:
修改您的btn
代码如下:
btn = Button(root, text='print something', command=lambda: print_something(variable.get()))
这就是我的意思:
from tkinter import *
root = Tk()
variable = StringVar()
variable.set(2)
entry = Entry(root, textvariable=variable, width=10)
entry.pack()
def print_something(n):
print(n)
btn = Button(root, text='print something', command=lambda: print_something(variable.get()))
btn.pack()
root.mainloop()
请注意,您的代码需要清理。
以上是关于python绑定函数到一个按钮[重复]的主要内容,如果未能解决你的问题,请参考以下文章