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绑定函数到一个按钮[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将按钮绑定到VPython 7功能

如何有条件地将 C 代码片段编译到我的 Perl 模块?

在片段中单击按钮播放声音(Kotlin)[重复]

python tkinter如何将键绑定到按钮

13 个非常有用的 Python 代码片段

如何使用视图绑定从片段更改父活动中的视图[重复]