繁体   English   中英

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

[英]How to make the spacing between two widgets displayed in a 3 column grid equal in tkinter?

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

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

给出以下输出(正如人们所期望的):

在此处输入图片说明

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

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

给出这个输出:

在此处输入图片说明

如您所见,两个小部件没有正确间隔开。 我想得到这种输出:

在此处输入图片说明

我如何实现这一目标? 为什么输出 #2 中的间距不均匀?

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

预先感谢您的回答! 请原谅我,因为我只是 tkinter 的初学者。

PS:我知道这与问题有点不同,但如果您能指出一些来源/教程,我可以更好地了解有关 tkinter 工作原理的更多信息,请这样做!

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

为什么输出 #2 中的间距不均匀?

原因是因为即使您只使用两列,您也是三列,权重为 1。

如果您的目标是三个大小相等的列,则应使用uniform选项。 weight仅适用于未使用的空间,它绝不保证大小相等的列。

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

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

这是结果:

截屏

暂无
暂无

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

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