Я получаю другое поведение от Listbox.curselection()
, когда есть другой код будущего. Мое намерение состоит в том, чтобы заменить выбранные элементы новыми элементами с обновленными значениями. Когда две строки lb.delete
и lb.insert
закомментированы, curselection()
вернет правильный выбранный диапазон. Однако, когда они не закомментированы, curselection()
вернет только один индекс, независимо от фактического выбора. Я подумал, что это может быть проблема с генератором, поэтому я попытался list(self.lb.curselection())
, но это не привело к изменениям в поведении. Я также пробовал различные версии root.after()
на методе g_nfo
, чтобы увидеть, была ли это проблема с выбором времени, но это тоже ничего не делало. Я не понимаю, как curselection меняет свое поведение в зависимости от будущего кода. Кто-нибудь знает ответ на этот вопрос?
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