首页 文章

Tkinter多个Radiobutton组

提问于
浏览
1

我正在尝试创建一个设置窗口,其中包含多组TkInter Radiobutton . 他们应该修改我以后可以使用的文本变量 .

我有以下代码:

# radiobutton group 1
settingSort = ""
settingSortRadio1 = tkinter.Radiobutton(settingsWindow, text="Frequency", variable=settingSort, value="freq")
settingSortRadio1.select()
settingSortRadio1.pack()
settingSortRadio2 = tkinter.Radiobutton(settingsWindow, text="Alphabetical", variable=settingSort, value="alpha")
settingSortRadio2.pack()

#radiobutton group 2
settingAnalyseRadio1 = tkinter.Radiobutton(settingsWindow, text="Word frequency", variable=settingAnalyse, value="wfreq")
settingAnalyseRadio1.select()
settingAnalyseRadio1.pack()
settingAnalyseRadio2 = tkinter.Radiobutton(settingsWindow, text="Letter frequency", variable=settingAnalyse, value="lfreq")
settingAnalyseRadio2.pack()

但是,这些按钮似乎仍然是同一组的一部分 . 选择组1中的按钮将取消选择窗口中的所有其他按钮(包括组2中),反之亦然 .

我怎样才能解决这个问题?

2 回答

  • 1

    这不起作用,因为你需要使用variable class而不是你所做的 .

    我的意思是,你需要改变这一行:

    settingSort = ""
    

    至:

    settingSort = tkinter.StringVar()
    

    然后根据您的具体需要you need to initialize settingSort .

  • 0

    这是因为你没有使用tkinter中的in built变量类 .

    您需要执行以下操作:

    from tkinter import *
    
    root = Tk()
    
    var1 = StringVar()
    var2 = StringVar()
    
    var1.set(0)
    var2.set(0)
    
    Radiobutton(root, text = "group1", variable = var1, value = 0).pack()
    Radiobutton(root, text = "group1", variable = var1, value = 1).pack()
    Radiobutton(root, text = "group2", variable = var2, value = 0).pack()
    Radiobutton(root, text = "group2", variable = var2, value = 1).pack()
    
    root.mainloop()
    

    让我们分解一下,让它更容易理解 .

    var1 = StringVar()
    var2 = StringVar()
    

    所以上面我们创建了两个 StringVar() 变量 . 就你需要关注的而言,这些只是"containers",它们存储特定小部件的 Value . 我们创建两个因为我们有两个不同的 Radiobutton 小部件组 .

    var1.set(0)
    var2.set(0)
    

    上面我们将 StringVar() 变量的值设置为与每个组的第一个 Radiobutton 小部件的值相同(我们即将初始化) . 这意味着当绘制 Radiobutton 时,默认情况下将开始选择每个组中的第一个 .

    Radiobutton(root, text = "group1", variable = var1, value = 0).pack()
    Radiobutton(root, text = "group1", variable = var1, value = 1).pack()
    Radiobutton(root, text = "group2", variable = var2, value = 0).pack()
    Radiobutton(root, text = "group2", variable = var2, value = 1).pack()
    

    在上面我们初始化了 Radiobutton 小部件 . 我们使用每个 Radiobuttonvariable 属性来分配与每个组相关联的变量类(组1的 var1 和组2的 var2 ),然后我们使用 value 属性将 Radiobutton s应该"store"分配给它们的相关变量 .

    这允许我们在2 "groups"中创建4个 Radiobutton ,它可以独立于另一个"group"更新两个变量 .

相关问题