【问题标题】:How to select one Tkinter Radiobutton per variable如何为每个变量选择一个 Tkinter 单选按钮
【发布时间】:2020-10-15 03:21:57
【问题描述】:

我正在尝试制作一个循环来填充 9 个单选按钮,每个按钮都有 4 个选项,并放置在一个网格中。但是,以下代码字,我可以为每个问题选择多个选项。我的理解是,对于每个变量,我应该只能选择一个。循环是否构造错误?


MODES = [
    ('dep_name1', 'dep_but1', 2, "Not at all", 'op1'),
    ('dep_name2', 'dep_but2', 3, "Several days", 'op2'),
    ('dep_name3', 'dep_but3', 4, "More than half the days", 'op3'),
    ('dep_name4', 'dep_but4', 5, "Nearly everyday", 'op4'),
    ]

for r in range (2, 11):
    for dep_name, button, c, text, b_val in MODES:
        button = tk.StringVar()
        # button.set("L")
        dep_name = tk.Radiobutton(window, text=text, variable=button, indicatoron=0, value=b_val).grid(row=r, column=c, sticky='e')

window.columnconfigure("all", weight=1)
window.rowconfigure("all", weight=1)


window.mainloop()

【问题讨论】:

    标签: loops tkinter radio-button


    【解决方案1】:

    您正在为每个单选按钮创建一个变量。您应该为每个 group 单选按钮设置一个变量。

    由于变量一次只能有一个值,tkinter 使用该变量来知道哪些单选按钮属于一个逻辑组。也就是说,所有具有相同变量的单选按钮都是一组逻辑按钮。

    这是一种方法:

    vars = []
    for r in range (2, 11):
        var = tk.StringVar(value="op1")
        vars.append(var)
        for dep_name, button, c, text, b_val in MODES:
            tk.Radiobutton(window, text=text, variable=var, indicatoron=0, value=b_val).grid(row=r, column=c, sticky='e')
    

    此示例将变量保存到一个列表中,以便您可以在代码中的其他位置通过索引来引用它们。

    我不太明白 dep_namedep_button 应该代表什么。在这两种情况下,您都从 MODES 初始化它们,然后在循环内更改它们。无论如何,关键是您需要在外循环内创建变量,以便为每组单选按钮创建一个变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      相关资源
      最近更新 更多