140 lines
4.2 KiB
Python
140 lines
4.2 KiB
Python
from tkinter import *
|
||
from tkinter import ttk
|
||
import configparser
|
||
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
|
||
config = configparser.ConfigParser()
|
||
config.read('cfg.ini')
|
||
print(config['DEFAULT']['db_path'])
|
||
|
||
|
||
def load_database():
|
||
global database, config
|
||
database = db.DB(config['DEFAULT']['db_path'])
|
||
|
||
|
||
def help_menu():
|
||
global root
|
||
newWindow = Toplevel(root)
|
||
newWindow.title("New Window")
|
||
newWindow.geometry("200x200")
|
||
Label(newWindow,
|
||
text ="This is a new window").pack()
|
||
|
||
|
||
def fond_menu():
|
||
global root
|
||
newWindow = Toplevel(root)
|
||
newWindow.title("New Window")
|
||
newWindow.geometry("200x200")
|
||
Label(newWindow,
|
||
text ="This is a new window").pack()
|
||
|
||
def close_prog(event):
|
||
exit()
|
||
|
||
def key_pressed(event):
|
||
print(event.keysym)
|
||
if event.keysym == 'F1':
|
||
print("Клавиша 'F1' была нажата")
|
||
if event.keysym == 'F2':
|
||
print("Клавиша 'F2' была нажата")
|
||
if event.keysym == 'F3':
|
||
print("Клавиша 'F3' была нажата")
|
||
if event.keysym == 'F4':
|
||
print("Клавиша 'F4' была нажата")
|
||
|
||
def selected(event):
|
||
global listbox, image_label, desc_label, img
|
||
print(event)
|
||
# получаем индексы выделенных элементов
|
||
selected_indices = listbox.curselection()
|
||
# получаем сами выделенные элементы
|
||
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, image_label, desc_label
|
||
|
||
load_config()
|
||
load_database()
|
||
|
||
root = Tk()
|
||
root.title("amDB")
|
||
root.geometry('600x400+50+50')
|
||
root.minsize(700, 500)
|
||
root.bind('<KeyPress-F1>', key_pressed)
|
||
root.bind('<KeyPress-F2>', key_pressed)
|
||
root.bind('<KeyPress-F3>', key_pressed)
|
||
root.bind('<KeyPress-F4>', key_pressed)
|
||
root.bind('<KeyPress-F10>', key_pressed)
|
||
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()
|
||
|
||
fond_menu = Menu(tearoff=0)
|
||
fond_menu.add_command(label="Найти...")
|
||
fond_menu.add_separator()
|
||
fond_menu.add_command(label="Добавить")
|
||
fond_menu.add_command(label="Удалить")
|
||
fond_menu.add_command(label="Изменить")
|
||
fond_menu.add_separator()
|
||
fond_menu.add_command(label="Выход")
|
||
|
||
help_menu = Menu(tearoff=0)
|
||
help_menu.add_command(label="Содержание")
|
||
help_menu.add_separator()
|
||
help_menu.add_command(label="О программе")
|
||
|
||
main_menu.add_cascade(label="Фонд", menu=fond_menu)
|
||
main_menu.add_cascade(label="Справка", menu=help_menu)
|
||
|
||
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",width=30)
|
||
listbox.bind("<<ListboxSelect>>", selected)
|
||
listbox.place(x=0,y=0, relheight=0.95)
|
||
|
||
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()
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main() |