我有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()
...