如何使3列网格中显示的两个小部件之间的间距在tkinter中相等?

2024-04-23 07:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码循环三次以创建三个标签小部件

import tkinter as tk

root = tk.Tk()
root.geometry("400x200")

frm = tk.Frame(master=root, bg="yellow")
frm.columnconfigure(index=(0, 1, 2), weight=1)

for i in range(3):
    tk.Label(master=frm, text=i, bg="red", padx=40, pady=10).grid(row=0, column=i)

frm.pack(fill="both", expand=True)

root.mainloop()

给出以下输出(如预期):

enter image description here

但是,下面的代码只循环两次来创建两个标签小部件

import tkinter as tk

root = tk.Tk()
root.geometry("400x200")

frm = tk.Frame(master=root, bg="yellow")
frm.columnconfigure(index=(0, 1, 2), weight=1)

for i in range(2):
    tk.Label(master=frm, text=i, bg="red", padx=40, pady=10).grid(row=0, column=i)

frm.pack(fill="both", expand=True)

root.mainloop()

给出此输出:

enter image description here

如您所见,这两个小部件的间距不正确。我想得到这种输出:

enter image description here

我如何做到这一点?为什么在输出#2中间距不均匀

请记住,我希望在不创建任何其他标签小部件的情况下执行此操作,因为我正在使用tkinter制作的应用程序中使用类似的方法来显示搜索结果。我问这个问题是因为当我试图只显示两个搜索结果或只显示一个搜索结果时,我在该应用程序中面临相同的问题

提前感谢您的回答!请跟我说实话,因为我只是tkinter的初学者

PS:我知道这有点偏离了问题,但如果你能给我指一些资料/教程,我可以更好地了解tkinter的工作原理,请多做

注意:我使用的是Python v3.8.5


1条回答
网友
1楼 · 发布于 2024-04-23 07:28:46

Why is the spacing uneven as in output #2?

原因是,尽管只使用了两列,但您有三列,权重为1

如果您的目标是三个大小相等的列,那么应该使用uniform选项weight只适用于未使用的空间,它不能保证大小相等的列

要获得三个大小相等的列,请将所有三列的uniform设置为相同的值。值是什么并不重要,只要所有列的值都相同

frm.columnconfigure(index=(0, 1, 2), weight=1, uniform="equal")

结果是:

screenshot

相关问题 更多 >