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