2015-10-19 5 views
0

я определяю класс, который создает LabelFrame с помощью Tkinter, с помощью кнопки радионовый экземпляр класса

Вот мой код:

from tkinter import * 

class MyLabelFrame: 
    def __init__(self, master=None,row=0,col=0,label='MyFrame'): 
     self.frame = LabelFrame(master, text=label) 
     self.frame.grid(row=row,column=col, sticky=(N,S,E,W)) 
     Label(self.frame,text=label).grid(row=0,column=0,columnspan=2) 
     self.frame.config(borderwidth = 2) 

     MODES = [("Yes", "1"), ("Not", "0")] 

     self.value = StringVar() 
     self.value.set("Yes") 

     for text, mode in MODES: 
      self.b = Radiobutton(self.frame, text=text, 
       variable=self.value.get(), value=mode) 
      self.b.grid(column=0, sticky=(W, E)) 
      #b.pack(anchor=W) 

##### Tkinter window 
root = Tk() 
root.title("My Root") 
##### Create 3 frames 
Myframe1 = MyLabelFrame(master=root, row=0, col=0, label='Frame1') 
Myframe2 = MyLabelFrame(master=root, row=1, col=0, label='Frame2') 
Myframe3 = MyLabelFrame(master=root, row=2, col=0, label='Frame3') 

Here is the resulting Frame

Проблема заключается в том, что кнопки НЕ независимы, если я установил один из YES, все три станут ДА.

Я хотел три независимых кадра.

ответ

1

Вы должны изменить это:

variable=self.value.get() 

к этому:

variable=self.value 

Опция variable требуется экземпляр переменной Tkinter, а не значение переменной.

Смежные вопросы