könnt ihr mir bitte mit folgenden Problem vielleicht:
Ich habe zwei Listboxen (Listbox1 und Listbox2), deren Inhalte über eine Datenbank geladen werden. Zuerst werden die Inhalte der linken Box (Listbox1) geladen. Die Inhalte der zweiten Box (Listbox2) werden in Abhängigkeit der in der ersten Box ausgewählten Elemente nachgeladen.
Wenn ich in der zweiten Box jetzt Elemente auswählen, wird die zweite Listbox (Listbox2) geleert. Es scheint so, als ob Listbox2, wenn man dort rein klickt, die Funktion 'OnSelect' ausführt. Eigentlich soll nur die Funktion 'OnSelect2' ausgeführt werden. Kann man das irgendwie verhindern?
Vielen Dank für euere Unterstützung.
Code: Alles auswählen
import tkinter as tk
from database import *
class gui(tk.Tk):
def __init__(self):
self.HPG = Abfrage_HPG().menu
self.cache = []
tk.Tk.__init__(self)
tk.Tk.title(self, 'TSI-Tool')
tk.Tk.geometry(self, '435x160')
# Rahmen Listbox1
frameListbox0 = tk.Frame(self)
frameListbox0.place(x=5, y=35, width=220, height=80)
# Rahmen Listbox2
frameListbox1 = tk.Frame(self)
frameListbox1.place(x=220, y=35, width=220, height=80)
# Listbox0
self.listboxNamen0 = tk.Listbox(frameListbox0, selectmode='multiple')
for item in self.HPG:
self.listboxNamen0.insert('end', item)
self.listboxNamen0.bind('<<ListboxSelect>>', self.OnSelect)
self.listboxNamen0.place(x=5, y=10, width=200, height=70)
# Listbox1
self.listboxNamen1 = tk.Listbox(frameListbox1, selectmode='multiple')
self.listboxNamen1.bind('<<ListboxSelect>>', self.OnSelect2)
self.listboxNamen1.place(x=5, y=10, width=200, height=70)
#Button
self.buttonVerarbeiten = tk.Button(text='Abfrage starten', command=self.buttonVerarbeitenClick)
self.buttonVerarbeiten.place(x=8, y=120, width=120, height=20)
def OnSelect(self, event):
print('OnSelect1')
listeAusgewaehlt = self.listboxNamen0.curselection()
self.listboxNamen1.delete(0, 'end')
self.cache = []
auswahl = []
for item in listeAusgewaehlt:
auswahl.append(str(self.HPG[item]).split(' ')[0])
self.build_query(auswahl)
def OnSelect2(self, event):
print('OnSelect2')
print(self.cache)
def build_query(self, auswahl):
temp_query = ''
for item in auswahl:
temp_query = temp_query + 'Schlagworte_HPG.Abkuerzung_HPG=\"' + str(item) + '\" OR '
if temp_query != '':
temp_query = temp_query[:-3]
self.UPG = Abfrage_UPG(temp_query).menu
for item in self.UPG:
self.listboxNamen1.insert('end', item)
self.cache.append(item)
print(self.cache)
def buttonVerarbeitenClick(self):
print(self.cache)
if __name__ == "__main__":
app = gui()
app.mainloop()