2017-05-03 5 views
0

ラジオボタンを選択すると、2つのオプションが同じ要素/値を持つ場合、両方が選択されます。forループtkinterの値から複数のオプションを選択するラジオボタン

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」))それを作ったし、私のプログラムは、私はそれが欲しかった方法を働きました。要素が同じで動作しないときだけです。上記のようにリストに追加しようとしましたが、これでエラーが解決しませんでした。

要素/値が同じでも1つのラジオボタンのみが選択されるようにするにはどうすればよいですか?

答えて

1

ラジオボタンの全体点は、それぞれが異なる値を持つことです。彼らは同じ値を持つセット内の2つのラジオボタンで動作するようには設計されていません。

関連する問題