简体   繁体   English

Tkinter 中的帧

[英]Frames in Tkinter

How can I make the desired output as shown in the picture?如何制作如图所示的所需 output? Frame 3 should be just beside to the two frames 1 and 2 regardless of how many widgets are inside them.第 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 suggestion is good but it continues leaving an undesired white space between frame 1 and 2. You can use pack to perfectly control the output: @Martin 建议很好,但它继续在第 1 帧和第 2 帧之间留下不需要的空白区域。您可以使用pack来完美控制 output:

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

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM