Собственно очередная ошибка, предполагаю что-то с супер классом. Подскажите или помогите создать конструкцию/шаблон (если можно с комментариями), может на моём примере, с использованием всех канонов ООП и со стороны специалиста, чтоб было основное окно и дочернее. Изучая этот вопрос, я увидел что многие начинающие как я - интересуются и пытаются найти ответ на данный вопрос. Думаю это будет полезно не только мне, но и поможет остальным иметь готовый шаблон, конструкцию для собственной реализации.
import tkinter as tk
class Main(tk.Frame):
def __init__(self, root, *attr, **kwargs):
super().__init__(self, root, *attr, **kwargs)
self.init_main()
def init_main(self):
toolbar = tk.Frame()
toolbar.pack(side=tk.TOP, fill=tk.X)
toolbar.config(bg='#d7d8e0', bd=2)
btnOpenDialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog)
btnOpenDialog.pack(side=tk.LEFT)
btnOpenDialog.config(bg='#d7d8e0', bd=0, compound=tk.TOP)
def open_dialog(self):
Child(self)
class Child(tk.Toplevel):
def __init__(self):
tk.Toplevel.__init__(self)
self.title('Добавить доходы/расходы')
self.geometry('400x220+400+300')
self.resizable(False, False)
if __name__ == "__main__":
root = tk.Tk()
app = Main(root)
app.pack()
root.title("Домашние финансы")
root.geometry("650x450+300+200")
root.resizable(False, False)
root.mainloop()
Traceback (most recent call last):
File "C:/Users/DANNY/PycharmProjects/test/test.py", line 31, in <module>
app = Main(root)
File "C:/Users/DANNY/PycharmProjects/test/test.py", line 6, in __init__
super().__init__(self, root, *attr, **kwargs)
File "C:\Python35\lib\tkinter\__init__.py", line 2593, in __init__
Widget.__init__(self, master, 'frame', cnf, {}, extra)
File "C:\Python35\lib\tkinter\__init__.py", line 2141, in __init__
BaseWidget._setup(self, master, cnf)
File "C:\Python35\lib\tkinter\__init__.py", line 2119, in _setup
self.tk = master.tk
AttributeError: 'Main' object has no attribute 'tk'