From 90c44ff2a2b8dc02b32d936a55e152cf9cdd5bc4 Mon Sep 17 00:00:00 2001 From: vadzik Date: Mon, 18 Dec 2023 13:19:08 +0300 Subject: [PATCH] working search window --- AmDB.db | Bin 65536 -> 118784 bytes main.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/AmDB.db b/AmDB.db index e2f791681979d8e990346f5b5691805893aa05bc..66134c0eeda6b8721e9c38683e1802e4be0f04e6 100644 GIT binary patch delta 17869 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 NXC-05D#AN_<3CFeF+l(T diff --git a/main.py b/main.py index 38e1a6f..e7d01d5 100644 --- a/main.py +++ b/main.py @@ -14,6 +14,8 @@ image_label = None desc_label = None img = None fViewHelp = False +fViewSearch = False +current_select = None def load_config(): @@ -62,15 +64,60 @@ def key_pressed(event): if event.keysym == 'F4': update_record_window() +def search_window(): + global listbox, fViewSearch + + def on_search(): + search_term = search_entry.get() + listbox.delete(0, END) + for item in original_list: + if search_term.lower() in item.lower(): + listbox.insert(END, item) + + + + def on_cancel(): + global fViewSearch + search_window.destroy() + listbox.delete(0, END) + for item in original_list: + listbox.insert(END, item) + fViewSearch = False + + if not fViewSearch: + fViewSearch = True + + search_window = Toplevel() + + search_label = Label(search_window, text="Поиск: ") + search_label.pack() + + search_button = Button(search_window, text="Найти", command=on_search) + search_button.pack() + + original_list = listbox.get(0, END) + + search_entry = Entry(search_window) + search_entry.pack() + + cancel_button = Button(search_window, text="Отмена", command=on_cancel) + cancel_button.pack() + search_window.protocol("WM_DELETE_WINDOW", on_cancel) + + search_window.mainloop() + def selected(event): - global listbox, image_label, desc_label, img + global listbox, image_label, desc_label, img, current_select selected_indices = listbox.curselection() selected = ''.join([listbox.get(i) for i in selected_indices]) record = database.get_record_by_name(selected) - img = ImageTk.PhotoImage(Image.open(io.BytesIO(record.img))) - image_label.config(image=img) - desc_label.insert(1.0, record.description) + if record != None and current_select != selected: + current_select = selected + img = ImageTk.PhotoImage(Image.open(io.BytesIO(record.img))) + image_label.config(image=img) + desc_label.delete(1.0, END) + desc_label.insert(1.0, record.description) def add_record_window(event=""): @@ -188,7 +235,6 @@ def load_listbox(): def open_help_window(): global fViewHelp - print(fViewHelp) def close_help(): global fViewHelp @@ -270,13 +316,13 @@ def main(): main_menu = Menu() fond_menu = Menu(tearoff=0) - fond_menu.add_command(label="Найти...") + fond_menu.add_command(label="Найти...", command=search_window) fond_menu.add_separator() fond_menu.add_command(label="Добавить", accelerator="F2", command=add_record_window) fond_menu.add_command(label="Удалить", accelerator="F3", command=confirm_delete) fond_menu.add_command(label="Изменить", accelerator="F4", command=update_record_window) fond_menu.add_separator() - fond_menu.add_command(label="Выход", accelerator="ctrl+X", command=close_prog) + fond_menu.add_command(label="Выход", accelerator="Ctrl+X", command=close_prog) help_menu = Menu(tearoff=0) help_menu.add_command(label="Содержание", command=open_help_window)