从python 2.7x到3.6.x的tkinter检查按钮

时间:2018-12-06 09:55:18

标签: python tkinter

我有CheckButtons类,该类曾经在使用python 2.7时起作用。 该类创建了一个tkinter选中按钮小部件,该小部件将允许用户勾选他/她想要的“多维数据集”。我曾经调用selected_cubes对象的states()函数来获取表示所选“多维数据集”的列表[0,1,...,1]。

我被迫将代码迁移到python 3.6。 现在,这似乎不再起作用,我得到了以下

TypeError: int() argument must be a string, a bytes-like object or a number, not 'map'

似乎checkbutton.states()并没有映射检查按钮的状态,而是返回了Python map对象,而不是所需的列表。

为什么该功能不再起作用:(?

class CheckButtons():
    ## a class that creates contains a list of check buttons which spectra to combine
    def __init__(self, parent, length):
        self.observer                           = []
        self.parent                             = parent
        self.length                             = length

        self.selectors                          = []
        self.selector_states                    = []

        for n in range(self.length):
            selector, selector_state            = self.selector()

            label.grid(column=0, row=n+1,padx=5)                
            selector.grid(column=1, row=n+1,padx=5)

            self.selectors.append(selector)
            self.selector_states.append(selector_state)

    def selector(self):
        # function that creates the check buttons 
        chk_state                               = tk.BooleanVar()
        chk_state.set(True)
        chk                                     = tk.Checkbutton(self.parent, text='Choose', var=chk_state)
        return(chk, chk_state)

    def state(self):
        return map((lambda var: var.get()), self.selector_states)

用途如下:

self.selected_cubes                         = self.CheckButtons(self.framex, self.controller, self.length)

在需要了解当前状态时致电selected_cubes.states() ...

0 个答案:

没有答案