def workspace_onclick_event(root, event, mode: str): """ Автор: Цель: обработчик события нажатия на рабочее пространство таблицы данных Вход: объект главного окна, информация события, вид нажатия (одинарное, двойное) Выход: нет """ glob.sort = not glob.sort tree = glob.table4base # одиночное нажатие по заголовку - сортировка if mode == "Single": if tree.identify_region(event.x, event.y) == "heading": column = tree.identify_column(event.x) index4column = int(column[1:]) glob.current_base = glob.current_base.sort_values( by=glob.columns[index4column - 1], axis=0, ascending=glob.sort, ignore_index=True) glob.current_base = glob.correct_base_values(glob.current_base) glob.update_workspace() # двойное нажатие по полю - редактирование elif mode == "Double": edit_event(root)
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 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()