Ошибка выбора списка tkinter при переключении вкладокPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка выбора списка tkinter при переключении вкладок

Сообщение Anonymous »

У меня есть интерфейс с вкладками со списками на каждой вкладке. При смене вкладок первый выбор на новой вкладке выдается с ошибкой (ошибка индекса), но любой выбор после этого распознается правильно. Мне удалось воспроизвести ошибку в этом упрощенном примере:

Код: Выделить всё

import tkinter as tk
from tkinter import ttk

class App(tk.Tk):
"""basic class to replicate tab-switching error"""

def __init__(self):
"""exactly what it looks like"""
super().__init__()
self.items = {'Alphic': ["A","B","C",'c','d'], 'Numera':['1','2','3','4','5','6']}

self.selection = tk.StringVar()
self.main = tk.Frame()
self.tabs = ttk.Notebook(self.main)

self.make_tabs()

self.main.pack()

def make_tabs(self):
"""create all tabs in collected data"""

def make_tab(f, data):
'create single tab'
frame = ttk.Frame(self.tabs)
select  = tk.Listbox(frame,
width = 20,
height = 8)

def update_selection(*_):
try:
index = [i for i in select.curselection()][0]
except IndexError:
index = "This Error Right Here"
print(index)

for n,k in enumerate(data):
print("inserting", n)
select.insert(n+1,k)

select.pack()
frame.pack()
select.bind('', update_selection)
return frame

for i, k in self.items.items():
self.tabs.add(make_tab(i,k), text=i)

self.tabs.pack()

if __name__ == "__main__":
a = App()
a.mainloop()

Эта проблема вызывает опасную ошибку в более крупной программе, поскольку ошибка позволяет выбранному индексу «просачиваться» из ранее выбранной вкладки. Я изолировал эту ошибку в этой проблеме.
Я пытался проверить пройденное событие, чтобы увидеть, есть ли какие-либо разъяснения, но никаких кубиков - или разъяснений - не было. надо найти.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ching-tabs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»