gpt4 book ai didi

python - 使用 "command"和 "bind"上的参数调用函数

转载 作者:行者123 更新时间:2023-11-30 23:45:45 25 4
gpt4 key购买 nike

我想指出的是,我学习Python的时间很短。这个问题是针对初学者的。

我需要在程序顶部的菜单中添加命令,这将调用函数“color_picker(“red”)。

kolory.add_command(label="Czerwony", command=color_picker('red'))当我使用它时,它在某种程度上是错误的,因为它在程序启动后被调用,它不等待我单击菜单按钮。 (我确信这一点,因为我在该函数中添加了“showinfo”,并且它在我执行任何操作之前显示了该消息)kolory.add_command(label="Czerwony", command=lambda: color_picker('red')) 这有点有用,但我不知道“lambda”在这里意味着什么。这是在菜单选项下调用带有参数的函数的唯一方法吗?

绑定(bind)键盘快捷键也有同样的问题。okno.bind("1", color_picker) - 将调用该函数但没有参数,该参数应该是颜色。我怎样才能做到这一点?

那么,如何使用 add_command 将带参数的函数分配给键盘快捷键和菜单?

PS。正在通过谷歌搜索,但似乎 python 没有像 c# 那样好的文档。或者我太笨了找不到它。

编辑:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
TypeError: color_picker() takes at most 1 argument (2 given)

当我尝试在 okno.bind 中使用“pick_red”时,这是错误消息

最佳答案

我不确定我是否理解这个问题,但这里是;

问题是您正在调用 color_picker函数(通过在函数名称后添加())。

您想要做的是传递实际的函数,而不是函数调用的结果作为 command关键字参数,例如add_command(label="Czerwony", command=color_picker)

但是,由于您想给它一个固定参数 'red' ,您必须使用 partial来自functools ,类似;

from functools import partial
pick_red = partial(color_picker, "red")
kolory.add_command(label="Czerwony", command=pick_red)

编辑:

现在您的错误消息显示您正在使用 Tkinter ,根据 documentation 可以看出赋予 bind() 的函数总是传递 event参数,所以你需要一个可以接受它的函数;

def pick_red_with_event(event):
# We really do nothing with event for now but we always get it...
color_picker("red")

okno.bind("1", pick_red_with_event)

<罢工>同样的事情适用于 okno.bind ,如果您定义了 pick_red如上所述,只需执行:

okno.bind("1", pick_red)

<罢工>

关于python - 使用 "command"和 "bind"上的参数调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9396211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com