首页 > 解决方案 > 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()

标签: pythontkinter

解决方案


@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()

在此处输入图像描述


推荐阅读