ich lasse mir in einer Combobox Sachen aus einer Datenbank anzeigen und würde gerne, dass diese sich nach einer Änderung aktualisiert und das Geänderte auch sofort angezeigt wird, ohne dass ich das Fenster schließen und wieder öffnen muss.
Hab schon ein paar Sachen ausprobiert, aber wahrscheinlich was falsch gemacht^^
Bestimmt kann mir einer von euch helfen.
Danke im Voraus.
Hier der gekürzte Code:
Code: Alles auswählen
from tkinter import *
import os
from tkinter.ttk import Combobox
import tkinter as tk
import sqlite3
DB = 'test.db'
if (not os.path.isfile(DB)):
conn = sqlite3.connect(DB)
c = conn.cursor()
c.execute('''CREATE TABLE test_db (
id INT AUTO_INCREMENT GENERATED BY DEFAULT IDENTITY PRIMARY KEY,
name VARCHAR NOT NULL)
''')
c.execute('''INSERT INTO test_db(id,name) VALUES
(0,'test1'),
(NULL,'test2'),
(NULL,'test3'),
(NULL,'test4')
''')
conn.commit()
conn.close()
def loesch_test():
conn = sqlite3.connect(DB)
c = conn.cursor()
c.execute('DELETE FROM test_db WHERE name = (:test)',
{
'test' : test.get()
})
conn.commit()
conn.close()
def combo_input_test():
conn = sqlite3.connect(DB)
c = conn.cursor()
c.execute('SELECT name FROM test_db ORDER BY name COLLATE NOCASE')
data = []
for row in c.fetchall():
data.append(row[0])
return data
conn.commit()
conn.close()
Fenster = tk.Tk()
text=Label(Fenster, text='test-Typen')
text.grid()
test = Combobox(Fenster, state='readonly')
test['values'] = combo_input_test()
test.grid()
test.current(0)
Lösch = Button(Fenster, text='Löschen', command=loesch_test)
Lösch.grid()
Fenster.mainloop()