首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有办法禁用与同一Tkinter变量相关的一组无线电按钮?

是否有办法禁用与同一Tkinter变量相关的一组无线电按钮?
EN

Stack Overflow用户
提问于 2022-08-18 17:29:04
回答 1查看 32关注 0票数 0

我使用了一个for循环来创建一组无线电按钮,可以选择这样的项目:

代码语言:javascript
复制
modes = [('Item A',20),('Item B',100),('Item C',180),('Item D',280)]
for item in modes:
        button = Radiobutton(picker, text=item[0], variable=item_choice, value=item[0], command=select_item)
        button.place(x = item[1], y = 180)

有没有一种方法可以通过变量item_choice禁用这些无线电按钮,它们都与之相关?因为我没有与每个按钮相关联的变量名。我试过button.config(state=DISABLED),但它似乎不起作用。是否有方法禁用与变量item_choice关联的所有按钮?对于进一步的上下文-我使用一个循环来创建无线电按钮,因为在我的实际代码中大约有10个无线电按钮。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 17:43:20

您可以将它们附加到列表中,然后迭代按钮列表,并禁用它们。

代码语言:javascript
复制
btnlist = []
for item in modes:
    button = ....
    button.place()
    btnlist.append(button)

然后以后..。

代码语言:javascript
复制
for button in btnlist:
   button.config(...)

如果它们是容器化的,则可以处理容器的所有子部件。例如,如果它们位于一个框架中:

代码语言:javascript
复制
widgets = frame.winfo_children()
for widget in widgets:
    widget.config(...)

注意:我在for循环中使用小部件,如果您想要寻址所有的按钮,您应该在按钮中键入check。这使每个小部件都进入上下文。

例如,如果需要输入框,请按如下方式选中:

代码语言:javascript
复制
if widget.winfo_class() == 'Entry':
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73407217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档