correct layout of main window
This commit is contained in:
parent
699697d0b6
commit
ecdd7c33ee
2
db.json
2
db.json
@ -1 +1 @@
|
|||||||
[]
|
["{\"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\"}"]
|
||||||
@ -43,4 +43,9 @@ class DB:
|
|||||||
def delete_record(self, id):
|
def delete_record(self, id):
|
||||||
for i in range(len(self.records)):
|
for i in range(len(self.records)):
|
||||||
if self.records[i].id == id:
|
if self.records[i].id == id:
|
||||||
self.records.pop(i)
|
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')
|
||||||
BIN
img/azovskoe.jpg
Normal file
BIN
img/azovskoe.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
51
main.py
51
main.py
@ -1,12 +1,16 @@
|
|||||||
from tkinter import *
|
from tkinter import *
|
||||||
|
from tkinter import ttk
|
||||||
import configparser
|
import configparser
|
||||||
from tkinter.ttk import Combobox
|
|
||||||
import db
|
import db
|
||||||
|
from PIL import ImageTk, Image
|
||||||
|
|
||||||
root = None
|
root = None
|
||||||
database = None
|
database = None
|
||||||
config = None
|
config = None
|
||||||
listbox = None
|
listbox = None
|
||||||
|
image_label = None
|
||||||
|
desc_label = None
|
||||||
|
img = None
|
||||||
|
|
||||||
def load_config():
|
def load_config():
|
||||||
global config
|
global config
|
||||||
@ -52,17 +56,24 @@ def key_pressed(event):
|
|||||||
print("Клавиша 'F4' была нажата")
|
print("Клавиша 'F4' была нажата")
|
||||||
|
|
||||||
def selected(event):
|
def selected(event):
|
||||||
global listbox
|
global listbox, image_label, desc_label, img
|
||||||
print(event)
|
print(event)
|
||||||
# получаем индексы выделенных элементов
|
# получаем индексы выделенных элементов
|
||||||
selected_indices = listbox.curselection()
|
selected_indices = listbox.curselection()
|
||||||
# получаем сами выделенные элементы
|
# получаем сами выделенные элементы
|
||||||
selected_langs = ",".join([listbox.get(i) for i in selected_indices])
|
selected = ''.join([listbox.get(i) for i in selected_indices])
|
||||||
msg = f"вы выбрали: {selected_langs}"
|
for record in database.records:
|
||||||
print(msg)
|
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():
|
def main():
|
||||||
global root, listbox, database
|
global root, listbox, database, image_label, desc_label
|
||||||
|
|
||||||
load_config()
|
load_config()
|
||||||
load_database()
|
load_database()
|
||||||
@ -70,13 +81,16 @@ def main():
|
|||||||
root = Tk()
|
root = Tk()
|
||||||
root.title("amDB")
|
root.title("amDB")
|
||||||
root.geometry('600x400+50+50')
|
root.geometry('600x400+50+50')
|
||||||
root.minsize(400, 300)
|
root.minsize(700, 500)
|
||||||
root.bind('<KeyPress-F1>', key_pressed)
|
root.bind('<KeyPress-F1>', key_pressed)
|
||||||
root.bind('<KeyPress-F2>', key_pressed)
|
root.bind('<KeyPress-F2>', key_pressed)
|
||||||
root.bind('<KeyPress-F3>', key_pressed)
|
root.bind('<KeyPress-F3>', key_pressed)
|
||||||
root.bind('<KeyPress-F4>', key_pressed)
|
root.bind('<KeyPress-F4>', key_pressed)
|
||||||
root.bind('<KeyPress-F10>', key_pressed)
|
root.bind('<KeyPress-F10>', key_pressed)
|
||||||
root.bind('<Control-x>', close_prog)
|
root.bind('<Control-x>', 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()
|
main_menu = Menu()
|
||||||
|
|
||||||
fond_menu = Menu(tearoff=0)
|
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=fond_menu)
|
||||||
main_menu.add_cascade(label="Справка", menu=help_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_bottom = Label(root, text="F1-справка F2-добавить F3-удалить F4-изменить F10-меню", bd=1, relief=SUNKEN, anchor=W, height=1)
|
||||||
label.pack(side=BOTTOM, fill=X)
|
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("<<ListboxSelect>>", selected)
|
listbox.bind("<<ListboxSelect>>", selected)
|
||||||
listbox.pack(side='top', anchor='nw', fill=Y)
|
listbox.place(x=0,y=0, relheight=0.95)
|
||||||
|
|
||||||
for record in database.records:
|
for i in range(len(database.records)):
|
||||||
listbox.insert(record.id, record.name)
|
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.config(menu=main_menu)
|
||||||
|
|
||||||
root.mainloop()
|
root.mainloop()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user