如何在 Tkinter 中创建嵌套网格?
How can I create a nested grid in Tkinter?
我正在使用 tkinter 并尝试将一些框架放入大型机的网格中。
在这些框架内,我想将新的小部件放入新的网格中。但问题是:tkinter 认为“新”网格的行和列仍然是来自大型机的旧网格。如何在嵌套网格中组织它们?
from tkinter import *
from tkinter import ttk
root = Tk()
mainframe = ttk.Frame(root)
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
upper_frame = ttk.Frame(mainframe).grid(row=0, column=0, sticky=(N, W))
lower_frame = ttk.Frame(mainframe).grid(row=1, column=0, sticky=(N, W))
label_1 = ttk.Label(upper_frame, text="Northwest ").grid(row = 0, column = 0)
label_2 = ttk.Label(upper_frame, text="Northeast ").grid(row = 0, column = 1)
label_3 = ttk.Label(lower_frame, text="Southwest ").grid(row = 0, column = 0)
label_4 = ttk.Label(lower_frame, text="Southeast ").grid(row = 0, column = 1)
root.mainloop()
注意这一行:
upper_frame = ttk.Frame(mainframe).grid(row=0, column=0, sticky=(N, W))
与下面的结果相同:
x = ttk.Frame(mainframe)
upper_frame = x.grid(row=0, column=0, sticky=(N, W))
所以 upper_frame
是 .grid(...)
的结果,即 None
。
使用 None
作为小部件的父项将使小部件成为 root window 的子项。所以这些标签是根 window 的子代,而不是预期的 upper_frame
和 lower_frame
.
您需要拆分线:
upper_frame = ttk.Frame(mainframe).grid(row=0, column=0, sticky=(N, W))
分成两行:
upper_frame = ttk.Frame(mainframe)
upper_frame.grid(row=0, column=0, sticky=(N, W))
同样适用于 lower_frame
。
我正在使用 tkinter 并尝试将一些框架放入大型机的网格中。 在这些框架内,我想将新的小部件放入新的网格中。但问题是:tkinter 认为“新”网格的行和列仍然是来自大型机的旧网格。如何在嵌套网格中组织它们?
from tkinter import *
from tkinter import ttk
root = Tk()
mainframe = ttk.Frame(root)
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
upper_frame = ttk.Frame(mainframe).grid(row=0, column=0, sticky=(N, W))
lower_frame = ttk.Frame(mainframe).grid(row=1, column=0, sticky=(N, W))
label_1 = ttk.Label(upper_frame, text="Northwest ").grid(row = 0, column = 0)
label_2 = ttk.Label(upper_frame, text="Northeast ").grid(row = 0, column = 1)
label_3 = ttk.Label(lower_frame, text="Southwest ").grid(row = 0, column = 0)
label_4 = ttk.Label(lower_frame, text="Southeast ").grid(row = 0, column = 1)
root.mainloop()
注意这一行:
upper_frame = ttk.Frame(mainframe).grid(row=0, column=0, sticky=(N, W))
与下面的结果相同:
x = ttk.Frame(mainframe)
upper_frame = x.grid(row=0, column=0, sticky=(N, W))
所以 upper_frame
是 .grid(...)
的结果,即 None
。
使用 None
作为小部件的父项将使小部件成为 root window 的子项。所以这些标签是根 window 的子代,而不是预期的 upper_frame
和 lower_frame
.
您需要拆分线:
upper_frame = ttk.Frame(mainframe).grid(row=0, column=0, sticky=(N, W))
分成两行:
upper_frame = ttk.Frame(mainframe)
upper_frame.grid(row=0, column=0, sticky=(N, W))
同样适用于 lower_frame
。