如何根据在python中选中或不选中复选框使单选按钮处于活动状态

时间:2021-04-30 12:05:24

标签: python tkinter

我创建了一个 CheckButtons(Apples、Rose、Red)列表,每个 CheckButton 带有两个选项(默认、自定义),它们用 RadioButtons 表示,如下所示。 1)。我希望单选按钮仅根据相应的复选框选择处于活动状态,如果未选中复选框,则应禁用,最后, 2)。根据复选框和单选按钮的选择,条目应附加到两个列表(list_d、list_c)。我可以打印带有选定复选框和单选按钮选项的列表。但是根据最后一个单选按钮选择附加了两个列表。所有这些都根据最后的单选按钮选择添加到 list_b 或 list_c。

import tkinter 
from tkinter import *
root = Tk()
my_list = {'apple ' : 0, 'rose' : 0, 'red' : 0}


list = []
var_list = []
var = []
de = 'default'
cu = 'custom'
for item in my_list:
    my_list[item] = Variable()
    radio = Variable()
    c = Checkbutton(root, text=item, variable=my_list[item], onvalue=item, offvalue="").pack(anchor=W)
    
    r = Radiobutton(root, text=de, variable=radio, value=de).pack(anchor=E)
    r2 = Radiobutton(root, text=cu, variable=radio, value=cu).pack(anchor=E)

    var_list.append(my_list[item])
    var.append(radio)

def add_to_list():
    global list
    list = []
    list_d = []
    list_c = []

    for i in var_list:
        if i.get() !="":
            list.append(i.get())
    for v in var:
        if radio.get() == de:
            list_d.append(v.get())
        elif radio.get() == cu:
            list_c.append(v.get())

    print(list)
    print(list_d)
    print(list_c)

Button(root, text='OK', command=add_to_list).pack(anchor=W)
root.mainloop()

感谢社区的帮助

0 个答案:

没有答案