tkinter列表框的当前选择行为随将来的代码而变化

时间:2019-03-10 01:46:03

标签: python tkinter

当将来有不同的代码时,我的行为与Listbox.curselection()不同。我的目的是将选定的项目替换为具有更新值的新项目。注释掉两行lb.deletelb.insert时,curselection()将返回正确的选定范围。但是,当不注释掉它们时,curselection()将仅返回单个索引,而不考虑实际选择。我以为这可能是生成器问题,所以我尝试了list(self.lb.curselection()),但这并没有改变行为。我还尝试了root.after()方法上的g_nfo的各种版本,以查看选择时间是否存在问题,但这也没有做任何事情。我不了解curselect如何根据未来的代码改变其行为。有人知道答案吗?

self.lbtkinter.Listbox的实例,p是字符串,而vs是字符串列表。

def g_nfo(self, e):
    ks = self.lb.curselection()
    p, vs = self.g_nm_()
    print('nfo', ks)
    for k, v in zip(ks, vs):
        l = self.lb.get(k)
        if l[0] == '' \
                   '2' and l[1] == '0' and l[4] == '-':
            continue
        fp = p + '/' + v
        # ln = self.g_nfo_(fp, v)
        ln = 'dummy_new_line'
        self.lb.delete(k)
        self.lb.insert(k, ln)
        # noinspection PyBroadException
        try:
            self.lb.selection_set(k)
        except Exception:
            pass

0 个答案:

没有答案