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 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)
Exemple #3
0
def create_base(path: str) -> str:
    """
    Автор: Подкопаева П.
    Цель: создает новую чистую базу
    Вход: путь
    Выход: новая база
    """
    if ".csv" in path:
        base_name = path[path.rfind('/') + 1:path.rfind('.')]
    else:
        base_name = path[path.rfind('/') + 1:]
        path += ".csv"
    new_base = pd.DataFrame(columns=constants.origin_columns)
    new_base = glob.correct_base_values(new_base)
    glob.work_list[base_name] = new_base
    new_base.to_csv(path, index=False)
    return base_name
def create_base(path: str) -> str:
    """
    Автор:  
    Цель: создает новую чистую базу
    Вход: путь
    Выход: новая база
    """
    # на всякий случай добавил проверку на наличие расширения в пути
    if ".csv" in path:
        base_name = path[path.rfind('/') + 1:path.rfind('.')]
    else:
        base_name = path[path.rfind('/') + 1:]
        path += ".csv"
    new_base = pd.DataFrame(columns=constants.origin_columns)
    new_base = glob.correct_base_values(new_base)
    glob.work_list[base_name] = new_base
    new_base.to_csv(path, index=False)
    return base_name
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()
Exemple #6
0
def read_base(path: str) -> str:
    """
    Автор: Ковязин В. 
    Цель: загружает базу из файла
    Вход: путь
    Выход: новая база
    """
    # если при создании базы возникло исключение, то перебрасываем исключение дальше
    try:
        # в прочитанной базе может не оказаться всех нужных нам столбцов
        base = pd.read_csv(path, header=0)[constants.origin_columns]
    except Exception:
        raise
    base_name = path[path.rfind('\\') + 1:path.rfind('.')]
    i = 0
    # если база уже загружена в программу, то в программу добавляется ее копию с постфиксом
    if base_name in glob.work_list.keys():
        while base_name + "(" + str(i) + ")" in glob.work_list.keys():
            i += 1
        base_name += "(" + str(i) + ")"
    base = glob.correct_base_values(base)
    glob.work_list[base_name] = base
    return base_name
Exemple #7
0
Цель: Модуль для обработки базы данных
"""

import pandas as pd
from Scripts import constants
from Scripts import globalvars as glob

# ['Year', 'Month', 'Day', 'Name', 'Location', 'Country', 'Latitude',
# 'Longitude', 'Elevation', 'Type', 'VEI', 'Agent',
# 'DEATHS', 'INJURIES', 'MISSING', 'DAMAGE_MILLIONS_DOLLARS', 'TSU', 'EQ']
bd = pd.read_csv('../Data/volcano.csv', header=0)[[
    'Year', 'Month', 'Day', 'Name', 'Location', 'Country', 'Latitude',
    'Longitude', 'Elevation', 'Type', 'VEI', 'Agent', 'DEATHS', 'INJURIES',
    'MISSING', 'DAMAGE_MILLIONS_DOLLARS', 'TSU', 'EQ'
]]
glob.work_list['Volcano Eruption'] = glob.correct_base_values(bd)


def read_base(path: str) -> str:
    """
    Автор: Ковязин В. 
    Цель: загружает базу из файла
    Вход: путь
    Выход: новая база
    """
    # если при создании базы возникло исключение, то перебрасываем исключение дальше
    try:
        # в прочитанной базе может не оказаться всех нужных нам столбцов
        base = pd.read_csv(path, header=0)[constants.origin_columns]
    except Exception:
        raise