Поведение выборки из списка tkinter меняется с будущим кодом - PullRequest
0 голосов
/ 10 марта 2019

Я получаю другое поведение от 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...