Self не работает в функции в отдельном файле
Господа, прошу - помогите разобраться. Есть отдельный .py файл внутри которого такая функция:
Она центрует любые окна которые к ней попадают, чтобы знать какое окно ей передаётся параметр -> self.
def window_center(self) -> None:
self.update_idletasks()
width = self.winfo_width()
frm_width = self.winfo_rootx() - self.winfo_x()
root_width = width + 2 * frm_width
height = self.winfo_height()
titlebar_height = self.winfo_rooty() - self.winfo_y()
root_height = height + titlebar_height + frm_width
x = self.winfo_screenwidth() // 2 - root_width // 2
y = self.winfo_screenheight() // 2 - root_height // 2
self.geometry('{}x{}+{}+{}'.format(width, height, x, y))
self.deiconify()
Внутри init класса окна в другом файле эта функция вызывается:
window_center(self)
Но я получаю ошибку:
window_center(self)
TypeError: 'module' object is not callable
Подскажите, что я не правильно делаю?
P.S. Максимально полный воспроизводимый пример:
import tkinter as tk
from tkinter import ttk
from ui_functions import *
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title('Library catalogue')
self.geometry('698x660')
self.rowconfigure(index=0, weight=1)
self.columnconfigure(index=0, weight=1)
style = ttk.Style()
style.theme_use('clam')
style.configure('mystyle.Treeview.Heading',
font=('Times New Roman', 12, 'bold'),
lightcolor='#242121', darkcolor='#242121')
style.configure('mystyle.Treeview', font=('Times New Roman', 12),
lightcolor='#242121')
window_center(self)
if __name__ == "__main__":
app = App()
app.mainloop()
Я не понимаю как передавать в функцию window_center - аргумент не self, чтобы она отцентрировала окно внутри себя... Импортирую функцию в файл с классом следующим образом:
from ui_functions import *
Так как там несколько файлов и это всё пакет...