def remove_inf(): """ Автор: \nЦель: удаляет строку из таблицы \nВход: корневое окно tkinter для создания окна редактирования, список активных столбцов таблицы \nВыход: нет """ # открыта ли база? if not glob.is_db_open(): return "break" # пуста ли база? if glob.current_base.empty: err.error("База пуста") return "break" ans = err.yes_no( "Вы точно хотите удалить данные?\n Это повлечёт полное удаление данных по выбранному вулкану." ) if ans: # todo: можно ли оптимизировать? index = glob.table4base.index(glob.table4base.selection()) glob.table4base.delete(list(glob.current_base.index)[-1]) glob.current_base = glob.current_base.drop(index=index) glob.current_base.reset_index(inplace=True, drop=True) glob.mark_changes() glob.update_workspace() glob.update_list()
def accept(root, list4values): """ Автор: Баканов Г., Подкопаева П. Цель: Проверка правильности введённых данных в окно Вход: Значение переменной любого типа Выход: нет """ flag = True if (list4values['Day'].get() > 29) and (list4values['Month'].get() == 2): flag = False elif list4values['Day'].get() > 31 or list4values['Day'].get() < 1: flag = False if list4values['Elevation'].get() > 6887: flag = False if (list4values['Latitude'].get() > 180) or (list4values['Latitude'].get() < -180): flag = False if (list4values['Longitude'].get() > 180) or (list4values['Longitude'].get() < -180): flag = False if flag: glob.current_base = glob.current_base.append({k: v.get() for k, v in list4values.items()}, ignore_index=True) glob.current_base = glob.correct_base_values(glob.current_base) glob.work_list[glob.current_base_name] = glob.current_base new_item = glob.table4base.insert('', 'end', iid=len(glob.current_base.index) - 1) for i in glob.columns: glob.table4base.set(new_item, column=i, value=list4values[i].get()) mb.showinfo("Сообщение", "Занесено в базу") glob.mark_changes() glob.update_list() root.destroy() else: err.error("Данные введены некорректно, повторите попытку")
def save_event(*args): """ Автор: Цель: Вход: Выход: """ # открыта ли база? if not glob.is_db_open(): return "break" # сохранена ли база? if not glob.is_saved(): glob.unmark_changes() glob.work_list[glob.current_base_name] = glob.current_base glob.update_list() # сохраняем в файл hand_base.save_base()
def save_event(*args): """ Автор: Баканов Г. Цель: Сохранение текущей базы в файл Вход: Нет Выход: Нет (файл) """ # открыта ли база? if not glob.is_db_open(): return "break" # сохранена ли база? if not glob.is_saved(): glob.unmark_changes() glob.work_list[glob.current_base_name] = glob.current_base glob.update_list() # сохраняем в файл hand_base.save_base()
def make_changes_event(win: tk.Toplevel, index: int, new_values: dict): """ Автор: Цель: обработчик события кнопки сохранения в окне редактирования поля таблицы Вход: объект окна редактирования tkinter для его закрытия после нажатия кнопки сохранить, текущий индекс выбранного поля таблицы, новые значения для записи в поле таблицы. Выход: нет """ # приводим все числа к числовому типу glob.current_base.iloc[index, :] = [x.get() for x in new_values.values()] # заменяем пустые строчки на nan и приводим тип всех столбцов таблицы к нужному типу glob.current_base = glob.correct_base_values(glob.current_base) glob.work_list[glob.current_base_name] = glob.current_base item = glob.table4base.selection() for key, value in new_values.items(): glob.table4base.set(item, column=key, value=value.get()) glob.mark_changes() glob.update_list() glob.update_workspace() win.destroy()