python - Tkinter 中的帧
问题描述
如图所示,如何制作所需的输出?第 3 帧应该在第 1 帧和第 2 帧的旁边,不管它们里面有多少小部件。
import tkinter as tk
master = tk.Tk()
master.title("Risk Calculator")
master.geometry("400x400")
group_1 = tk.LabelFrame(master, text="Frame 1")
group_1.grid(column=0,row=0,padx=8,pady=10,sticky="WE")
capital_label = tk.Label(group_1, text = 'Capital *', font=('calibre', 10))
capital_label.grid(column=0,row=1, sticky = 'e')
group_2 = tk.LabelFrame(master, text="Frame 2")
group_2.grid(column=0,row=3,padx=8,pady=4,sticky="WE")
broker_label = tk.Label(group_2, text = 'Broker', font=('calibre', 10))
broker_label.grid(column=0,row=3,padx=3,sticky='w')
group_3 = tk.LabelFrame(master, text="Frame 3")
group_3.grid(column=1,row=0,padx=8,pady=10,sticky="WE")
test = tk.Label(group_3, text = 'Test', font=('calibre', 10))
test.grid(column=0,row=3,padx=3,sticky='w')
test1 = tk.Label(group_3, text = 'Test1', font=('calibre', 10))
test1.grid(column=0,row=4,padx=3,sticky='w')
test2 = tk.Label(group_3, text = 'Test2', font=('calibre', 10))
test2.grid(column=0,row=5,padx=3,sticky='w')
master.mainloop()
解决方案
@Martin 的建议很好,但它会继续在第 1 帧和第 2 帧之间留下不需要的空白。您可以使用它pack
来完美控制输出:
import tkinter as tk
master = tk.Tk()
master.title("Risk Calculator")
master.geometry("400x400")
# Frame Left
frame_left = tk.Frame(master)
frame_left.pack(fill=tk.Y, side=tk.LEFT)
# Frame right
frame_right = tk.Frame(master)
frame_right.pack(fill=tk.Y, side=tk.LEFT)
# Frame 1
group_1 = tk.LabelFrame(frame_left, text="Frame 1")
group_1.pack(padx=8, pady=10)
capital_label = tk.Label(group_1, text = 'Capital *', font=('calibre', 10))
capital_label.grid(column=0,row=1, sticky = 'e')
# Frame 2
group_2 = tk.LabelFrame(frame_left, text="Frame 2")
group_2.pack(padx=8,pady=4)
broker_label = tk.Label(group_2, text = 'Broker', font=('calibre', 10))
broker_label.grid(column=0,row=3,padx=3,sticky='w')
# Frame 3
group_3 = tk.LabelFrame(frame_right, text="Frame 3")
group_3.pack(padx=8, pady=10)
test = tk.Label(group_3, text = 'Test', font=('calibre', 10))
test.grid(column=0,row=3,padx=3,sticky='w')
test1 = tk.Label(group_3, text = 'Test1', font=('calibre', 10))
test1.grid(column=0,row=4,padx=3,sticky='w')
test2 = tk.Label(group_3, text = 'Test2', font=('calibre', 10))
test2.grid(column=0,row=5,padx=3,sticky='w')
master.mainloop()