我有一组单选按钮,但出于某种原因,选择列表中的第一个按钮会将所有其他按钮设置为被选中但也显示为灰色。这仅在选择第一个时发生,选择任何其他单选按钮对其他按钮没有这种影响。
代码:
self.sort_val = None
SORT_METHODS = [('hot', 0), ('top', 1), ('new', 2), ('rising', 3), ('gilded', 4), ('controversial', 5)]
i=2
for SORT, SORTVAL in SORT_METHODS:
self.sort = Radiobutton(frame, text=SORT, variable=self.sort_val, value=SORTVAL, tristatevalue=0)
self.sort.grid(row=i, column=0)
i+=1
非常奇怪的行为,任何人都可以解释一下吗?
答案 0 :(得分:2)
你有两个问题。首先,您必须使用带有radiobuttons的tkinter变量,而不是标准变量。由于您使用的是整数,因此应使用IntVar
。您应该将其初始化为您想要的默认值。
例如:
self.sort_val = IntVar(value=0)
第二个问题与您使用tristatevalue
有关。根据{{1}}选项的文档:
指定使radiobutton显示多值选择的值,也称为三态模式。默认为“”。
因为第一个值为零,当您选择或取消选择它时,它会影响所有其他单选按钮。
如果您将tristatevalue
设置为tristatevalue
(或根本不设置它),则第一个单选按钮的行为与所有其他按钮一样。
答案 1 :(得分:0)
如果将tristatevalue
设置为与radiobuttons对应的数字,则在选择特定的一个时,将全部选中它们。
如果将tristatevalue
设置得足够高,使其高于其他单选按钮的所有值,则不会影响其中任何一个,并且它将正常运行。
这也阻止了他们在开始时被选中。