Оптимизация кода Python. Создание GUI

Небольшая работа по программированию в вузе. Есть предложения по оптимизации кода? Было бы интересно.

from tkinter import * from tkinter import messagebox from graph import *  def check(file):                # Проверка на наличие записей в файле         file = open(FILE)         if file.read() != '':                 file.close()                 return True         else:                 file.close()                 return None  def name_input():        #Функция ввода названия и обработки того же файла         global MASSIVE, kind_of_sport, SECOND_NAME, STROKA, FILE, CHOICE, choice         SECOND_NAME = []         kind_of_sport = []         MASSIVE = []         info = [0, 0]         STROKA = 3          if file_name.get() != '':               # Проверка на отсутствие ввода                 FILE = file_name.get() + '.txt' # Получение введённой информации без указания формата                 file_name.delete(0, END)                                                   try:                            # Обработка случая, когда файла с таким именем не существет                     F = open(FILE)                     if check(F) == True:                             f = open(FILE)                                            text2.grid(column = 0, row = 1) # 'Выберите вид спорта, по которому хотите вывести информация'                              for row in f:                                 row = row[:-1]                                 row = row.split(';')                                  if row[2] not in kind_of_sport:                                         kind_of_sport.append(row[2])    # Список с видами спорта                                 SECOND_NAME.append(row[0])                                 info[0] = row.pop(2)                                 info[1] = list(row)                                 MASSIVE.append(list(info))                              CHOICE_BUTTON = InputButton('Искать по дисциплине:')        # Кнопка 'Искать по дисциплине'                             choice = Entry(root, width=28)                              # Поле ввода для дисциплины                             choice.grid(column = 1, row = 3)                            # Размещение поля для ввода дисциплины                              sprt = 'Виды спорта:\n'                             for kind in kind_of_sport:                                  # Создание предложения 'Виды спорта:...'                                     sprt = sprt + kind + ',\n'                                      text5 = Label(root, text = sprt[:-2] + '.',bg = '#3f4b59', fg = 'white', width = 26) # Метка 'Виды спорта......'                             text5.grid(column = 1, row = 1)                                   else:                                                 messagebox.showinfo('Ошибка', 'Файл пуст')                        except FileNotFoundError:       # Обработка случая, когда файла с таким именем не существет                     messagebox.showinfo('Ошибка ввода', 'Файла с таким именем не существует') # Всплывающее окно в случае, когда файла с таким именем не существет                 SECOND_NAME.sort()                 QUIT_button.grid(column = 0, row = STROKA + 2)         else:                 QUIT_button.grid(column = 0, row = STROKA + 2)                 messagebox.showinfo('Ошибка ввода', 'Вы ничего не ввели')   # Всплывающее окно в случае, когда поле ввода пустое  class InputButton:      # Конпка 'Искать по дисциплине'         def __init__(self, name):                 self.button_name = name                 self.b = Button(root, text = self.button_name, width = 20, bg = '#3f4b59', fg = 'white', command = self.click) # Создание и разиещение кнопки                 self.b.grid(column = 0, row = 3)          def click(self):        # Действие кнопки при нажатии                 vid_sporta = choice.get()                 choice.delete(0, END)                 graph_name_COLOUR = '#3f4b59'                 if vid_sporta in kind_of_sport:                          COVER = Label(root, width = 80, height = 50, bg = '#3f4b59')     #Жёлтый фон                         COVER.place(x = 358, y = 51)                          brushColor('white')             # Белый холст для окна с графиком                         rectangle(0, 0, scale, scale)                         penSize(2)                                                points = []                                      sportsmen_AGE = []                         sportsmen_NAME = {}                         VOZRAST = {}                          col = 2         # Начальная колонка                         ROW = 1                          name_of_sport = Label(root, text = 'Вид спорта', bg = graph_name_COLOUR, fg = 'white')        # Названия полей                         second_name = Label(root, text = 'Фамилия', width = 15, bg = graph_name_COLOUR, fg = 'white') # Фамилия                         age = Label(root, text = 'Возраст', bg = graph_name_COLOUR, fg = 'white')                     # Возраст                         placement = Label(root, text = 'Место', bg = graph_name_COLOUR, fg = 'white')                 # Занятое место                         text3.grid(column = 4, row = 0)                 # Метка 'Самый молодой спортсмен, занимающийся данным видом спорта'                           youngest_sportsmen.grid(column = 5, row = 0)    # Фамилия самого молодого спортсмена                         name_of_sport.grid(column = col, row = ROW)     # Размещение полей                         second_name.grid(column = col + 1, row = ROW)   # Фамилия                         age.grid(column = col + 2, row = ROW)           # Возраст                         placement.grid(column = col + 3, row = ROW)     # Занятое место                          nazvanieSPORTA = Label(root, text = vid_sporta, width = 14, bg = graph_name_COLOUR, fg = 'white')       # Название вида спорта                         nazvanieSPORTA.grid(column = col, row = ROW + 1)                        # Размещение названия вида спорта                          for name in SECOND_NAME:                                        # Перебор отсортированного списка                                 for sportsmen_info in MASSIVE:                          # Размещение информации о спортсменах                                         if name in sportsmen_info[1]:                   # "Сортировка"                                                 if sportsmen_info[0] == vid_sporta:     # "Если вид спорта совпадает с названием кнопки"                                                            sportsmen_AGE.append(sportsmen_info[1][1])                      # Список с фамилиями для сортировки                                                         sportsmen_NAME[sportsmen_info[1][1]] = sportsmen_info[1][0]     # Словарь с возрастом спортсмена                                                          ROW += 1                                                        # Строка для размещения кнопки                                                          NAME = Label(root, text = sportsmen_info[1][0], width = 15, bg = graph_name_COLOUR, fg = 'white')     # Фамилия                                                         NAME.grid(column = col + 1, row = ROW)                                                                # Размещение                                                          AGE = Label(root, text = sportsmen_info[1][1], width = 15, bg = graph_name_COLOUR, fg = 'white')      # Возраст                                                         AGE.grid(column = col + 2, row = ROW)                                                                 # Размещение                                                          PLACEMENT = Label(root, text = sportsmen_info[1][2], width = 10, bg = graph_name_COLOUR, fg = 'white')# Место                                                         PLACEMENT.grid(column = col + 3, row = ROW)                                                           # Размещение                         y = 360                         line(20, y, y*2, y) # X                         line(20, 0, 20, y)  # Y                          for x in range(50, 350, 50):                                 line(x, y - 5, x, y + 5)    # Штрихи по X                                 line(15, x+10, 25, x+10)    # Штрихи по Y                          y0 = 310 # Нижний штрих по Y                         x0 = 50  # Левый штрих по X                          youngest_sportsmen.configure(text = sportsmen_NAME[str(sportsmen_AGE[0])], bg = '#3f4b59', fg = 'white', width = 14, height = 2)    # Вывод фамилии самого молодого спортсмена                          for i in range(int(min(sportsmen_AGE)), int(max(sportsmen_AGE)) + 1):                                 VOZRAST[i] = y  # Заполнение словаря с возрастом и его координатой                                 y -= 50                          for n in sportsmen_AGE:                                 points.append((x0, VOZRAST[int(n)])) # Заполнение списка с координатами точек                                 x0 += 50                          try:                    # Обработка случая, когда есть лишь одна точка                                 polyline(points)                         except:                 # Отображение той самой точки                                 penSize(5)                                       point(x0, y0)   # Ставится лишь одна точка                 elif vid_sporta == '':                         messagebox.showinfo('Ошибка ввода', 'Ничего не было введено')   # Всплывающее окно в случае, если ничего не было введено                 else:                         messagebox.showinfo('Ошибка ввода', 'Такого вида спорта нет')   # Всплывающее окно в случае, если такого вида спорта нет                 QUIT_button.grid(column = 0, row = 5)  def Quit():     # Функция для кнопки выхода из программы         root.destroy()         close()  def start():         global file_name, text2, root, QUIT_button, scale, text3, youngest_sportsmen         START.destroy()         root = Tk()         root.title('Сухомлин, 18-ИЭ-2')         scale = 400                     #          canvasSize(scale, scale)        #         windowSize(scale, scale)        # Настройки графика         penSize(2)                      #         penColor('black')               #          MAINCOVER = Label(root, bg = 'black', width = 300, height = 300) # Основной фон         MAINCOVER.place(x = 0, y = 0)         file_name = Entry(root, width=30)       #Поле ввода         text1 = Label(root, text = 'Введите название файла', bg = 'black', fg = 'white', height = 3)         text2 = Label(root, text = 'Выберите вид спорта,\n информацию по которому\n хотите вывести информацию',bg = '#3f4b59', fg ='white', height = 6)         text3 = Label(root, text = 'Самый молодой спортсмен,\n занимающийся данным видом спорта:', bg = '#3f4b59', fg = 'white')         text4 = Label(root, text = 'Сухомлин Георгий\n 18-ИЭ-2', bg = 'black', fg = 'white')         youngest_sportsmen = Label(root)         QUIT_button = Button(root, text = 'Выйти', command = Quit, bg = '#3f4b59', fg = 'white') # Кнопка завершения работы         Input_button = Button(root, text = 'Открыть', command = name_input, width = 15, bg = '#3f4b59', fg = 'white')  #Кнопка ввода          text1.grid(column = 0, row = 0)         #   "Введите название файла"         text4.grid(column = 3, row = 0)         file_name.grid(column = 1, row = 0)     #   Поле ввода         Input_button.grid(column = 2, row = 0)  #   Кнопка ввода         QUIT_button.grid(column = 0, row = 2)          file_name.focus() # Начальная фокусировка на поле ввода         run()         root.mainloop()   START = Tk() START.title('Добро пожаловать') START.geometry('300x100+850+400') cover = Label(START, bg = 'black',height = 100, width = 100) cover.place(x = 0, y = 0) start_button = Button(START, text = 'Начать работу', command = start, width = 30, height = 5, bg = '#3f4b59', fg = 'white') start_button.place(x = 40, y = 7) START.mainloop()