Обращение к основному файлу из пакета
Помогите разобраться, как правильно указать запрос, чтобы при такой структуре обратиться из 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?