我可以在for循环中使用枚举类型吗?

我在Python枚举中遇到了我认为不直观的行为。这是代码:

import tkinter as tk
from enum import Enum,auto

class Color(Enum):
    WHITE = auto()
    YELLOW = auto()
    ORANGE = auto()
    GREEN = auto()
    BLUE = auto()
    BROWN = auto()
    BLACK = auto()

def buttonaction(color):
    print(f'Clicked on {color.name}')

root = tk.Tk()
frame = tk.Frame(root)
frame.pack()

mixedList = [Color.WHITE,Color.WHITE,Color.GREEN,Color.BLUE,Color.YELLOW]

for item in mixedList:
    tk.Button(frame,text=item.name,command=lambda: buttonaction(item)).pack()

root.mainloop()

此脚本创建一个Tkinter窗口,其中包含一堆在列表上迭代的按钮。问题是在按钮上正确设置了名称,但是传递给命令的参数始终是循环中“ item”的最后一个值。

这是预期的行为吗?我该如何避免呢?

miaojia628 回答:我可以在for循环中使用枚举类型吗?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3160963.html

大家都在问