From ecdd7c33ee0ef88d858979c6440617eba4322e47 Mon Sep 17 00:00:00 2001 From: vadzik Date: Sun, 10 Dec 2023 11:38:26 +0300 Subject: [PATCH] correct layout of main window --- db.json | 2 +- db/__init__.py | 7 ++++++- img/azovskoe.jpg | Bin 0 -> 17314 bytes main.py | 51 +++++++++++++++++++++++++++++++++++------------ 4 files changed, 45 insertions(+), 15 deletions(-) create mode 100644 img/azovskoe.jpg diff --git a/db.json b/db.json index 0637a08..cebfee7 100644 --- a/db.json +++ b/db.json @@ -1 +1 @@ -[] \ No newline at end of file +["{\"id\":\"96235c7e-19b1-4510-bb09-06013d1344a6\",\"name\":\"\u0410\u0437\u043e\u0432\u0441\u043a\u043e\u0435 \u043c\u043e\u0440\u0435\",\"description\":\"\u043f\u043e\u043b\u0443\u0437\u0430\u043c\u043a\u043d\u0443\u0442\u043e\u0435 \u043c\u043e\u0440\u0435 \u0410\u0442\u043b\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u043a\u0435\u0430\u043d\u0430 \u043d\u0430 \u0432\u043e\u0441\u0442\u043e\u043a\u0435 \u0415\u0432\u0440\u043e\u043f\u044b, \u043e\u043c\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043f\u043e\u0431\u0435\u0440\u0435\u0436\u044c\u0435 \u0420\u043e\u0441\u0441\u0438\u0438 \u0438 \u0423\u043a\u0440\u0430\u0438\u043d\u044b. \u0421\u0430\u043c\u043e\u0435 \u043c\u0435\u043b\u043a\u043e\u0435 \u043c\u043e\u0440\u0435 \u0432 \u043c\u0438\u0440\u0435: \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 13,5 \u043c\u0435\u0442\u0440\u043e\u0432[2], \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u043e\u043a\u043e\u043b\u043e 7,4 \u043c (\u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043e\u0446\u0435\u043d\u043a\u0430\u043c \u2014 \u043e\u0442 6,8 \u0434\u043e 8 \u043c)[3]. \\n \u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u0410\u0442\u043b\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u043a\u0435\u0430\u043d\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 \u043f\u0440\u043e\u043b\u0438\u0432\u043e\u0432 \u0438 \u043c\u043e\u0440\u0435\u0439: \u041a\u0435\u0440\u0447\u0435\u043d\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u043b\u0438\u0432 \u2014 \u0427\u0451\u0440\u043d\u043e\u0435 \u043c\u043e\u0440\u0435 \u2014 \u043f\u0440\u043e\u043b\u0438\u0432 \u0411\u043e\u0441\u0444\u043e\u0440 \u2014 \u041c\u0440\u0430\u043c\u043e\u0440\u043d\u043e\u0435 \u043c\u043e\u0440\u0435 \u2014 \u043f\u0440\u043e\u043b\u0438\u0432 \u0414\u0430\u0440\u0434\u0430\u043d\u0435\u043b\u043b\u044b \u2014 \u042d\u0433\u0435\u0439\u0441\u043a\u043e\u0435 \u043c\u043e\u0440\u0435 \u2014 \u0421\u0440\u0435\u0434\u0438\u0437\u0435\u043c\u043d\u043e\u0435 \u043c\u043e\u0440\u0435 \u2014 \u0413\u0438\u0431\u0440\u0430\u043b\u0442\u0430\u0440\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u043b\u0438\u0432. \u041f\u043e \u043e\u0442\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043a\u0435\u0430\u043d\u0430 \u0410\u0437\u043e\u0432\u0441\u043a\u043e\u0435 \u043c\u043e\u0440\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u043a\u043e\u043d\u0442\u0438\u043d\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u0440\u0435\u043c \u043f\u043b\u0430\u043d\u0435\u0442\u044b. \u041e\u0431\u044a\u0451\u043c \u0432\u043e\u0434\u044b \u2014 290 \u043a\u043c\u00b3[4]. \\n \u0412 \u0434\u0440\u0435\u0432\u043d\u043e\u0441\u0442\u0438 \u0410\u0437\u043e\u0432\u0441\u043a\u043e\u0433\u043e \u043c\u043e\u0440\u044f \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u0438 \u0414\u043e\u043d \u0432\u043f\u0430\u0434\u0430\u043b \u0432 \u0427\u0451\u0440\u043d\u043e\u0435 \u043c\u043e\u0440\u0435 \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u041a\u0435\u0440\u0447\u0435\u043d\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u043b\u0438\u0432\u0430. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0430\u043a\u0432\u0430\u0442\u043e\u0440\u0438\u0438 \u0410\u0437\u043e\u0432\u0441\u043a\u043e\u0433\u043e \u043c\u043e\u0440\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043e\u043a\u043e\u043b\u043e 5600 \u0433\u043e\u0434\u0430 \u0434\u043e \u043d. \u044d.\",\"img_path\":\"img/azovskoe.jpg\"}"] \ No newline at end of file diff --git a/db/__init__.py b/db/__init__.py index 63ab125..351051b 100644 --- a/db/__init__.py +++ b/db/__init__.py @@ -43,4 +43,9 @@ class DB: def delete_record(self, id): for i in range(len(self.records)): if self.records[i].id == id: - self.records.pop(i) \ No newline at end of file + self.records.pop(i) + + +# db_t = DB('db.json') + +# db_t.add_record(name='Азовское море',description='полузамкнутое море Атлантического океана на востоке Европы, омывающее побережье России и Украины. Самое мелкое море в мире: глубина не превышает 13,5 метров[2], средняя глубина около 7,4 м (по разным оценкам — от 6,8 до 8 м)[3]. \n Соединяется с Атлантическим океаном длинной цепочкой проливов и морей: Керченский пролив — Чёрное море — пролив Босфор — Мраморное море — пролив Дарданеллы — Эгейское море — Средиземное море — Гибралтарский пролив. По отдалённости от океана Азовское море является самым континентальным морем планеты. Объём воды — 290 км³[4]. \n В древности Азовского моря не существовало и Дон впадал в Чёрное море в районе современного Керченского пролива. Предполагается, что заполнение акватории Азовского моря произошло около 5600 года до н. э.', img_path='img/azovskoe.jpg') \ No newline at end of file diff --git a/img/azovskoe.jpg b/img/azovskoe.jpg new file mode 100644 index 0000000000000000000000000000000000000000..906d149185be8407cd5ed1bd00b990ca7a9333c5 GIT binary patch literal 17314 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 84b198f..923cf1f 100644 --- a/main.py +++ b/main.py @@ -1,12 +1,16 @@ from tkinter import * +from tkinter import ttk import configparser -from tkinter.ttk import Combobox import db +from PIL import ImageTk, Image root = None database = None config = None listbox = None +image_label = None +desc_label = None +img = None def load_config(): global config @@ -52,17 +56,24 @@ def key_pressed(event): print("Клавиша 'F4' была нажата") def selected(event): - global listbox + global listbox, image_label, desc_label, img print(event) # получаем индексы выделенных элементов selected_indices = listbox.curselection() # получаем сами выделенные элементы - selected_langs = ",".join([listbox.get(i) for i in selected_indices]) - msg = f"вы выбрали: {selected_langs}" - print(msg) + selected = ''.join([listbox.get(i) for i in selected_indices]) + for record in database.records: + if record.name == selected: + print(record.img_path) + img = ImageTk.PhotoImage(Image.open(record.img_path)) + image_label.config(image=img) + # image_label.pack() + desc_label.insert(1.0,record.description) + + def main(): - global root, listbox, database + global root, listbox, database, image_label, desc_label load_config() load_database() @@ -70,13 +81,16 @@ def main(): root = Tk() root.title("amDB") root.geometry('600x400+50+50') - root.minsize(400, 300) + root.minsize(700, 500) root.bind('', key_pressed) root.bind('', key_pressed) root.bind('', key_pressed) root.bind('', key_pressed) root.bind('', key_pressed) root.bind('', close_prog) + for c in range(3): root.columnconfigure(index=c, weight=1) + for r in range(2): root.rowconfigure(index=r, weight=1) + main_menu = Menu() fond_menu = Menu(tearoff=0) @@ -96,16 +110,27 @@ def main(): main_menu.add_cascade(label="Фонд", menu=fond_menu) main_menu.add_cascade(label="Справка", menu=help_menu) - label = Label(root, text="F1-справка F2-добавить F3-удалить F4-изменить F10-меню", bd=1, relief=SUNKEN, anchor=W) - label.pack(side=BOTTOM, fill=X) + label_bottom = Label(root, text="F1-справка F2-добавить F3-удалить F4-изменить F10-меню", bd=1, relief=SUNKEN, anchor=W, height=1) + label_bottom.place(relx=0.0, rely=0.95, relwidth=1) - listbox = Listbox(root, justify="left", height=200) + + listbox = Listbox(root, justify="left",width=30) listbox.bind("<>", selected) - listbox.pack(side='top', anchor='nw', fill=Y) + listbox.place(x=0,y=0, relheight=0.95) - for record in database.records: - listbox.insert(record.id, record.name) + for i in range(len(database.records)): + listbox.insert(i, database.records[i].name) + image_frame = ttk.Frame(root) + image_label = Label(image_frame, text="Hello Tkinter", borderwidth=2) + image_label.place(relx=0.0, rely=0.0, relheight=1.0, relwidth=1.0) + image_frame.place(relx=0.35, rely=0.0,relheight=0.95, relwidth=0.3) + + desc_frame = ttk.Frame(root) + desc_label = Text(desc_frame, wrap="word") + desc_label.insert(1.0, "test") + desc_label.place(relx=0.0, rely=0.0, relheight=1.0, relwidth=1.0) + desc_frame.place(relx=0.7, rely=0.0, relwidth=0.3, relheight=0.95) root.config(menu=main_menu) root.mainloop()