я хочу, чтобы список подсказывал мне слова всякий раз, когда я набираю слово в поле ввода с помощью tkinter - PullRequest
0 голосов
/ 12 апреля 2020

я строю словарь tkinter gui со словами и значением в базе данных. Я хочу, чтобы список предлагал слова из базы данных для меня всякий раз, когда я набираю слово в поле ввода. Я видел код (второй код далеко внизу) в stackoverflow, который полезен, но я не знаю, как я могу использовать его с моим кодом. пожалуйста, как я могу использовать второй код для редактирования моего кода. пожалуйста, помогите мне.

Это мой код;

def search():
    conn= sqlite3.connect('GS_DICTION.db')
    cur= conn.cursor()
    tex.delete(1.0,"end")
    data=v.get()
    cur.execute("SELECT Meaning, Image FROM DICTION WHERE Words= ?", (data,))
    var= cur.fetchone()
    if var:
        tex.insert("end", var[0])  # accessing the meaning
    else:
        messagebox.showinfo("Dic","Word not found")

   entry= tk.Entry(dictWin, width=20,font= ("Bahnschrift SemiLight",11), bg= "#FFFFFf",bd=2, 
   textvariable= v)
   entry.place(x=50, y= 25)
   listbox = tk.Listbox(dictWin, width=35)
   listbox.place(x= 370, y=70)

Второй код, который я видел онлайн

   import tkinter as tk

def on_keyrelease(event):

# get text from entry
    value = event.widget.get()
    value = value.strip().lower()

# get data from test_list
    if value == '':
        data = test_list
    else:
        data = []
        for item in test_list:
            if value in item.lower():
                 data.append(item)

# update data in listbox
listbox_update(data)


def listbox_update(data):
# delete previous data
    listbox.delete(0, 'end')

# sorting data
    data = sorted(data, key=str.lower)

# put new data
    for item in data:
        listbox.insert('end', item)


def on_select(event):
# display element selected on list
    print('(event) previous:', event.widget.get('active'))
    print('(event)  current:', event.widget.get(event.widget.curselection()))
    print('---')


# --- main ---

test_list = ('apple', 'banana','ban', 'Cranberry', 'dogwood', 'alpha', 'Acorn', 'Anise', 'Strawberry' 
)

root = tk.Tk()

entry = tk.Entry(root)
entry.pack()
entry.bind('<KeyRelease>', on_keyrelease)

listbox = tk.Listbox(root)
listbox.pack()
#listbox.bind('<Double-Button-1>', on_select)
listbox.bind('<<ListboxSelect>>', on_select)

listbox_update(test_list)
root.mainloop()
...