TKinter选择第一个单选按钮将所有其他按钮设置为选中并显示为灰色

时间:2017-03-25 17:35:44

标签: python tkinter

我有一组单选按钮,但出于某种原因,选择列表中的第一个按钮会将所有其他按钮设置为被选中但也显示为灰色。这仅在选择第一个时发生,选择任何其他单选按钮对其他按钮没有这种影响。

starting state

enter image description here

enter image description here

代码:

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

非常奇怪的行为,任何人都可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

你有两个问题。首先,您必须使用带有radiobuttons的tkinter变量,而不是标准变量。由于您使用的是整数,因此应使用IntVar。您应该将其初始化为您想要的默认值。

例如:

self.sort_val = IntVar(value=0)

第二个问题与您使用tristatevalue有关。根据{{​​1}}选项的文档:

  

指定使radiobutton显示多值选择的值,也称为三态模式。默认为“”。

因为第一个值为零,当您选择或取消选择它时,它会影响所有其他单选按钮。

如果您将tristatevalue设置为tristatevalue(或根本不设置它),则第一个单选按钮的行为与所有其他按钮一样。

答案 1 :(得分:0)

如果将tristatevalue设置为与radiobuttons对应的数字,则在选择特定的一个时,将全部选中它们。 如果将tristatevalue设置得足够高,使其高于其他单选按钮的所有值,则不会影响其中任何一个,并且它将正常运行。 这也阻止了他们在开始时被选中。