Radiobuttons从for循环tkinter中的值中选择多个选项

时间:2017-05-03 09:32:18

标签: python tkinter radio-button

选择Radiobutton时,如果其中两个选项具有相同的元素/值,则选择它们。

from tkinter import*

class CourseInfo:
    def __init__(self, subject):
        self.subjectName = subject
        self.selectedselected = "0" #default setting

class SubjectGUI:
    def __init__(self, parent):

        #setting up list for subject objects
        self.subjectInfo = [CourseInfo("English"), CourseInfo("English"), CourseInfo("Math"), CourseInfo("Math")]

        #set up for subject radio buttons
        self.subjectChoice = StringVar() #instance for StringVar created
        self.subjectChoice.set("*") #sets the initial selection

        self.rb_info = []

        for subject in self.subjectInfo: #for loop outputs show info
            self.show_rb = Radiobutton(parent, variable = self.subjectChoice, value = subject.subjectName, text = subject.subjectName, command = self.select_subject)
            self.rb_info.append(self.subjectChoice)
            self.show_rb.pack()

        self.selection_label = Label(text = "You have selected: ")
        self.selection_label.pack()

    def select_subject(self):

        for i in range(len(self.subjectInfo)):
            subject = self.rb_info[i].get()
            self.subjectInfo[i].selectedselected = subject


        self.selection_label.configure(text = "You have selected: " + subject)


# main routine
if __name__ == "__main__":
    root = Tk()
    subjectChoice = SubjectGUI(root)
    root.mainloop()

我这样做了,所以我附加到我的列表中的元素是不同的(例如CourseInfo(“English1”),CourseInfo(“English2”)...),我的程序按照我想要的方式工作。只是当元素相同而不起作用时。我尝试附加到如上所示的列表,但这并没有解决我的错误。

我是如何制作的,即使元素/值相同,也只选择一个Radiobutton?

1 个答案:

答案 0 :(得分:1)

无线电按钮的重点是每个都有不同的值。它们的设计不适用于具有相同值的集合中的两个单选按钮。