Функция .grid(...)
возвращает None
. Поэтому, когда вы делаете
frame_1 = ttk.Frame(root, relief="sunken", height="400", width="400").grid(row=0, column=0, rowspan=1, columnspan=1)
Вы назначаете None
на frame_1
. И то же самое относится к frame_2
и label_1
.
Поскольку frame_1 == None
, вызов ttk.Frame(frame_1, ...)
фактически совпадает с ttk.Frame(None, ...)
. Поэтому вы не передаете мастер, который по умолчанию имеет корневое окно в качестве мастера. Снова, то же самое касается создания label_1
.
Исправление - разделить создание и размещение виджетов на две отдельные строки:
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Tk test")
root.geometry("800x800")
frame_1 = ttk.Frame(root, relief="sunken", height="400", width="400")
frame_1.grid(row=0, column=0, rowspan=1, columnspan=1)
frame_2 = ttk.Frame(frame_1, relief="sunken", height="200", width="200")
frame_2.grid(row=0, column=0, rowspan=1, columnspan=1)
label_1 = ttk.Label(frame_2, text="Text")
label_1.grid(row=0, column=0, sticky="N, E")
root.mainloop()