gpt4 book ai didi

python - 在 python 中使用 lambda 时出错,你知道为什么吗?

转载 作者:行者123 更新时间:2023-12-05 06:48:44 24 4
gpt4 key购买 nike

我试图有一个复选框,它在单击时切换变量的值(w/tkinter):

import tkinter as tk

CheckVar1 = tk.IntVar()
isOn = False
C1 = tk.Checkbutton(window, text = "Decreasing", variable = CheckVar1, onvalue=1, offvalue=0, height=5)
C1.place(relx=0.05, rely=0.3)
C1.bind("<<CheckboxSelect>>",lambda _: isOn = True if isOn == False else False)
print(isOn)

但是我在使用 lambda 时遇到了问题:

lambda _: isOn = True if isOn == False else False

它报错了,你知道为什么吗?我该如何解决?

最佳答案

lambda 不应该有赋值,它只用于表达式和调用其他函数。但是有一种在 lambda 内部分配的 hacky 方法。但首先是正确的方法:

def check():
global isOn
if not isOn:
isON = True
else:
isOn = False

所以 hacky 方法包括使用 execlambda 中执行 python 代码,例如:

C1.bind("<<CheckboxSelect>>",lambda _: exec('isOn=not isOn',globals())) # Thanks to Dr. Casual for the idea
# Also recommended to use event or e or something else instead of _

所以您可以将整个 check() 更改为:

def check():
global isOn
isOn = not isOn

关于python - 在 python 中使用 lambda 时出错,你知道为什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66758759/

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