在 Tkinter 中将两个标签框并排放置

Place two labelframes next to each other in Tkinter

我想像下图那样并排显示两个标签框 Picture1。你知道怎么做吗?

当我尝试使用 labelframe 时,它​​没有留在原地,只是调整大小以将文本放入其中。

这就是我想要的,但标签框架中有 txt 居中

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.geometry('600x200')
style = ttk.Style(root)
root.tk.call('source', 'azure dark.tcl')
style.theme_use('azure')

lf1 = ttk.Labelframe(root, text='Labeltxt1', width=300,height=100)
lf1.grid(row=0,column=0)
lf2 = ttk.Labelframe(root, text='Labeltxt2', width=300,height=100)
lf2.grid(row=0,column=1)

root.mainloop()

这就是我得到的:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.geometry('600x200')
style = ttk.Style(root)
root.tk.call('source', 'azure dark.tcl')
style.theme_use('azure')

lf1 = ttk.Labelframe(root, text='Labeltxt1', width=300,height=100)
lf1.grid(row=0,column=0)
lf2 = ttk.Labelframe(root, text='Labeltxt2', width=300,height=100)
lf2.grid(row=0,column=1)

lb1= ttk.Label(lf1, text='txt1')
lb1.pack()
lb2= ttk.Label(lf2, text='txt2')
lb2.pack()

root.mainloop()

标签框未填满 window 的宽度。

希望我说得够清楚了。感谢您的帮助。

你需要通过root.rowconfigure()root.columnconfigure()告诉布局管理器这两个Labelframe填充所有可用的space。还需要在.grid(...)中指定sticky='nsew'。在这种情况下,您不需要指定 Labelframe.

widthheight 选项
...
root.rowconfigure(0, weight=1)
root.columnconfigure((0,1), weight=1)

lf1 = ttk.Labelframe(root, text='Labeltxt1')
lf1.grid(row=0, column=0, sticky='nsew')
lf2 = ttk.Labelframe(root, text='Labeltxt2')
lf2.grid(row=0, column=1, sticky='nsew')
...