gpt4 book ai didi

python - 我可以使用循环快速生成 x 个复选按钮吗?

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:55 24 4
gpt4 key购买 nike

是否可以在 TkInter 中迭代生成 3 个复选按钮。例如,我在下面分别创建了 3 个按钮,但是如果 BtnLst 是这样定义的,我可以通过运行循环来简化这段代码吗?

    BtnLst = ["Power", "Temperature", "Sunlight"]
#####Loop here?

...

    C1 = Checkbutton(frame, text = "Power",\
onvalue = 1, offvalue = 0, height=1, \
width = 10)
C1.pack(side=LEFT)
C2 = Checkbutton(frame, text = "Temperature",\
onvalue = 1, offvalue = 0, height=1, \
width = 10)
C2.pack(side=LEFT,padx =5, ipadx=12)
C3 = Checkbutton(frame, text = "Sunlight",\
onvalue = 1, offvalue = 0, height=1, \
width = 10)
C3.pack(side=LEFT)

这在 tkinter 中甚至可能吗,因为我已经分别定义了所有 3 个按钮?

最佳答案

当然,这很简单。

for name in BtnLst:
button = Checkbutton(frame, text=name, onvalue = 1, offvalue = 0, height=1, width = 10)
button.pack(side=LEFT)

如果每个元素都有自己独特的文本、配置选项和回调函数,您仍然可以在列表中创建它们,但您需要在迭代时将这些东西都保存在一个集合中。如果你只有三个按钮,我不建议这样做;由于您正在制作三个列表,因此您并没有真正获得任何复杂性。如果您有 30 个按钮或其他东西,它可能仍然值得做。

names = ["Power", "Temperature", "Sunlight"]
callbacks = [SomeOtherClass.foo, SomeOtherClass.bar, SomeOtherClass.baz]
pack_options = [{}, {"padx": 5, "ipadx":12}, {}]
for name, callback, pack_options in zip(names, callbacks, pack_options):
button = Checkbutton(frame, text=name, onvalue = 1, offvalue = 0, height=1, width = 10, command=callback)
button.pack(side=LEFT, **pack_options)

关于python - 我可以使用循环快速生成 x 个复选按钮吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26390143/

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