from tkinter import *
from tkinter import messagebox as mb
import modul_1
from tkinter import filedialog as fd
def add_window():
def add():
name = en1.get()
num = en2.get()
time = en3.get()
trains.add(name, num, time)
add_w = Toplevel()
add_w.title('Добавить')
add_w.resizable(False, False)
add_w.geometry('400x200')
en1 = Entry(add_w)
en2 = Entry(add_w)
en3 = Entry(add_w)
lb1 = Label(add_w, text="Пункт назначения")
lb2 = Label(add_w, text="Номер поезда")
lb3 = Label(add_w, text="Время отправления")
bt1 = Button(add_w, text="Добавить", command=add)
lb1.grid(row=0, column=0)
lb2.grid(row=1, column=0)
lb3.grid(row=2, column=0)
en1.grid(row=0, column=1)
en2.grid(row=1, column=1)
en3.grid(row=2, column=1)
bt1.grid(row=4, column=0, columnspan=2)
def extract_text():
file_name = fd.asksaveasfilename()
try:
f = open(file_name, 'w')
except (FileNotFoundError, TypeError):
mb.showinfo("Ошибка","Файл не сохранен!")
else:
s = text.get(1.0, END)
f.write(s)
f.close()
def select_window():
def choice():
try:
choice_en = int(en4.get())
res = trains.select(choice_en)
if res:
for idx, name in enumerate(res, 1):
text.delete(0.0, END)
text.insert(0.0, '{:>4}: {}'.format(idx, modul_1.train.name))
else:
text.delete(0.0, END)
text.insert(0.0, 'Такого пункта отправления нет')
except():
mb.showinfo("Выбор пункта",
"Введите пункт отправления!")
sel_w = Toplevel()
sel_w.title('Выбрать')
sel_w.resizable(False, False)
sel_w.geometry('225x100')
lb4 = Label(sel_w, text="Введите пункт отправления поезда")
en4 = Entry(sel_w)
bt3 = Button(sel_w, text="Подтвердить", command=choice)
lb4.pack(padx=2, pady=2)
en4.pack(padx=2, pady=2)
bt3.pack(padx=2, pady=2)
def insert_text():
file_name = fd.askopenfilename()
try:
f = open(file_name)
except(FileNotFoundError, TypeError):
mb.showinfo("Открытие файла",
"Файл не выбран!")
else:
s = f.read()
text.insert(1.0, s)
f.close()
def help_window():
help_w = Toplevel()
help_w.title('Помощь')
help_w.resizable(False, False)
help_w['bg'] = 'white'
img = PhotoImage(file='Справка.png')
bt2 = Button(
help_w,
image=img,
bg='white',
borderwidth=0,
activebackground='white',
command=lambda: help_w.destroy()
)
bt2.image = img
bt2.pack()
def show():
text.delete(0.0, END)
text.insert(0.0, trains)
if __name__ == '__main__':
trains = modul_1.Staff()
root = Tk()
root.geometry('800x450')
root.title('Расписание поездов')
root.resizable(False, False)
main_menu = Menu(root)
root.config(menu=main_menu)
file_menu = Menu(main_menu, tearoff=0)
file_menu.add_command(label="Открыть", command=insert_text)
file_menu.add_command(label="Добавить", command=add_window)
file_menu.add_command(label="Сохранить", command=extract_text)
main_menu.add_cascade(label="Файл", menu=file_menu)
main_menu.add_command(label="Выбрать", command=select_window)
main_menu.add_command(label="Показать", command=show)
main_menu.add_command(label="Помощь", command=help_window)
main_menu.add_command(label="Выход", command=lambda: root.destroy())
text = Text(bg='white', width=100, height=100)
text.pack(side=LEFT)
scroll = Scrollbar(command=text.yview)
scroll.pack(side=LEFT, fill=Y)
text.config(yscrollcommand=scroll.set)
root.mainloop()
как сделать так,чтобы при выводе окна,таблица не изменялась,как бы её не пытались удалить или что-то с ней сделать?