Я написал небольшой класс по учебнику, чтобы использовать CheckList
, но когда я выбираю / отменяю выбор какого-либо элемента, он дважды вызывает on_item_selected
:
class View(object):
def __init__(self, root, db):
self.root = root
self.cl = None
self.db = db
def build(self):
self.cl = tix.CheckList(self.root, browsecmd=self.on_item_selected)
self.cl.pack()
schemas = self.db.fetch_schemas()
for schema in schemas:
self.cl.hlist.add(schema[0], text=schema[0])
self.cl.setstatus(schema[0], "off")
self.cl.autosetmode()
def on_item_selected(self, item):
# I know this code will try to add items on each `on` state,
# that's test code. Just accept it, man
status = self.cl.getstatus(item)
if status == 'on':
tables = self.db.fetch_tables(item)
for table in tables:
name = "{}.{}".format(item, table)
self.cl.hlist.add(name, text=table)
self.cl.setstatus(name, "off")
Почему это происходит?