Tkinter-Listbox-Auswahlfehler beim Wechseln der RegisterkartenPython

Python-Programme
Guest
 Tkinter-Listbox-Auswahlfehler beim Wechseln der Registerkarten

Post by Guest »

Ich habe eine Registerkartenoberfläche mit Listenfeldern auf jeder Registerkarte. Beim Wechseln der Registerkarten tritt bei der ersten Auswahl auf der neuen Registerkarte ein Fehler auf (Indexfehler), jede Auswahl danach wird jedoch korrekt erkannt. Ich habe es geschafft, den Fehler in diesem vereinfachten Beispiel zu reproduzieren:

Code: Select all

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()

Dieses Problem verursacht einen gefährlichen Fehler in einem größeren Programm, da der Fehler dazu führt, dass der ausgewählte Index von der zuvor ausgewählten Registerkarte „durchläuft“. Ich habe diesen Fehler auf dieses Problem eingegrenzt.
Ich habe versucht, das vergangene Ereignis zu untersuchen, um zu sehen, ob es eine Klärung gibt, aber es gab keinen Hinweis – oder keine Klarstellung gefunden werden.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post