Radiobutton实例没有attibute'变量

时间:2015-05-27 15:52:32

标签: tkinter radiobuttonfor

我正在尝试使用单选按钮为用户提供一组选项。当我点击“获取数据类型”按钮时,Python返回“AttributeError:Radiobutton实例没有属性'变量'。显然它确实如此,但拒​​绝看到它们(它们):

class DataType:

    def __init__(self, master):
        frame = LabelFrame(master, text = 'Data Type')
        frame.pack()

        data_contents = StringVar()

        self.radiobutton = Radiobutton(frame,
                     text="Fixed Data",
                     variable = data_contents,
                     value = 'fixed')
        self.radiobutton.pack()

        self.radiobutton = Radiobutton(frame,
                     text="Random Data",
                     variable = data_contents,
                     value = 'random')
        self.radiobutton.pack()

        self.radiobutton = Radiobutton(frame,
                     text="All 1's",
                     variable = data_contents,
                     value = '1s')
        self.radiobutton.pack()

        self.radiobutton = Radiobutton(frame,
                     text="All 0's",
                     variable = data_contents,
                     value = '0s')
        self.radiobutton.pack()


        data_contents.set(self.radiobutton)
        self.printdata = Button(frame,
                         text="What data?",
                         command=self.write_data)
        self.printdata.pack()

    def write_data(self):
        print (self.radiobutton.variable)

1 个答案:

答案 0 :(得分:0)

您误解了tkinter选项。指定类似variable=data_contents的属性时,它不会成为对象的属性。相反,它是一个小部件配置选项。

要访问variable配置选项的值,您需要使用以下其中一项:

self.radiobutton.cget("variable")
self.radiobutton["variable"]

注意:你带着这个问题走错了路。您无需获取变量,因为您可以控制变量。该变量应该是一个实例属性,您可以在其上调用get()方法:

...
self.data_contents = StringVar()
...
def write_data(self):
    print(self.data_contents.get())