Обращение к основному файлу из пакета

Помогите разобраться, как правильно указать запрос, чтобы при такой структуре обратиться из file.py к основному файлу main.py в корневой директории:

/Project
    /Package 
        __init__.py
        file.py
    main.py

Не могу понять как правильно и получаю ошибку: attempted relative import beyond top-level package

P.S.

Функции в классе Main отвечающие за отрисовку tree и обновление при нажатии на кнопку обновить (update_tree):

def create_tree_widget(self, bd: list = None):
        style = ttk.Style()
        style.theme_use('winnative')
        style.configure('mystyle.Treeview.Heading', font=('Times New '
                                                          'Roman', 14, 'bold'))
        style.configure('mystyle.Treeview', font=('Times New Roman', 14))
        
        self.rowconfigure(index=2, weight=2)
        self.columnconfigure(index=0, weight=1)
        columns = ('column_1', 'column_2', 'column_3', 'column_4', 'column_5')
        self.tree = ttk.Treeview(columns=columns, show='headings', style='mystyle.Treeview')
        self.tree.grid(row=2, column=0, sticky='nsew')

        self.tree.heading('column_1', text='#', anchor='center')
        self.tree.heading('column_2', text='Автор', anchor='center', command=lambda: self.update_tree(bd=select_book.request_sort('author')))
        self.tree.heading('column_3', text='Название книги', anchor='center', command=lambda: self.update_tree(bd=select_book.request_sort('title')))
        self.tree.heading('column_4', text='Состояние', anchor='center', command=lambda: self.update_tree(bd=select_book.request_sort('state')))
        self.tree.heading('column_5', text='Статус', anchor='center')

        width_column_2, width_column_3 = select_book.request_max_len()

        self.tree.column('#1', stretch=tk.NO, width=40, anchor='center')
        self.tree.column('#2', stretch=tk.NO, width=width_column_2*9,
                         anchor='ne')
        self.tree.column('#3', stretch=tk.NO, width=width_column_3*10)
        self.tree.column('#4', stretch=tk.NO, width=110, anchor='center')
        self.tree.column('#5', stretch=tk.NO, width=80, anchor='center')

        scrollbar = ttk.Scrollbar(orient=tk.VERTICAL, command=self.tree.yview)
        self.tree.configure(yscrollcommand=scrollbar.set)
        scrollbar.grid(row=2, column=1, sticky='ns')

        for item in bd:
             self.tree.insert("", tk.END, values=(item[0], item[1], item[2], item[3], item[4],)

        self.tree.bind('<<TreeviewSelect>>', self.item_selected)

        return self.tree

def update_tree(self, bd: list = None):
        [self.tree.delete(i) for i in self.tree.get_children()]
        self.tree = self.create_tree_widget(bd)

Функция в классе Main создающая главное меню, кнопки в котором ссылаются на функции в package:

def create_main_menu(self):
        menu = tk.Menu()
        menu.add_cascade(label='Обновить', command=self.update_tree)
        menu.add_cascade(label='Добавить книгу', command=self.btn_add)
        self.config(menu=menu)
        self.option_add('*tearOff', tk.FALSE)
        return menu

Функции в классе Package:

def __init__(self):
        self.add_window = tk.Toplevel()
        self.add_window.title('Добавить')
        window_center.center(self.add_window)
        self.create_window()

def create_window(self):
        label_author = ttk.Label(self.add_window, text='Автор:',
                                 font=('Georgia', 14))
        label_author.place(x=66, y=20)
        self.entry_author = ttk.Entry(self.add_window, font=('Georgia', 14), width=30)
        self.entry_author.place(x=140, y=20)

        label_title = ttk.Label(self.add_window, text='Название:',
                                font=('Georgia', 14))
        label_title.place(x=34, y=60)
        self.entry_title = ttk.Entry(self.add_window, font=('Georgia', 14), width=30)
        self.entry_title.place(x=140, y=60)

btn_submit = ttk.Button(self.add_window, text='Добавить книгу',
                                command=self.action)
        btn_submit.place(x=260, y=218)

def action(self):
        author = self.entry_author.get()
        title = self.entry_title.get()
insert_book.request(author, title)
self.add_window.destroy()

Как мне выполнить обновление update_tree в классе Main, после выполнение функций в классе Package?


Ответы (0 шт):