Python Tkinter.grid间距选项?

Python Tkinter.grid间距选项?,python,python-3.x,tkinter,grid-layout,Python,Python 3.x,Tkinter,Grid Layout,我是Tkinter的新手,我尝试用grid layout manager创建一个应用程序。然而,我似乎找不到一种方法来利用它的方式,我想。我需要做的是模拟一个充满“单元格”的网格,这样我就可以在单元格(3,8)中放置标签,或者在单元格(5,1)中放置按钮。以下是我尝试过的一个例子: import tkinter as tk root = tk.Tk() label = tk.Label(root, text = 'Label') label.grid(column = 3, row = 8)

我是Tkinter的新手,我尝试用grid layout manager创建一个应用程序。然而,我似乎找不到一种方法来利用它的方式,我想。我需要做的是模拟一个充满“单元格”的网格,这样我就可以在单元格(3,8)中放置标签,或者在单元格(5,1)中放置按钮。以下是我尝试过的一个例子:

import tkinter as tk
root = tk.Tk()

label = tk.Label(root, text = 'Label')
label.grid(column = 3, row = 8)

button = tk.Button(root, text = 'Button')
button.grid(column = 5, row = 1)

Tkinter保留每个小部件的相对位置(即,
按钮
位于标签的上方和右侧),但它忽略了两者之间的任何空格。我搜索了一下这个问题,找到了关于体重的信息,但这似乎不是我想要的;我想要一些独立于
标签
按钮
布局的东西。谢谢你的帮助

您可以通过在小部件的父级上运行和方法(在本例中,父级为
root
)来指定网格中列/行的间距(包括不包含小部件的列/行)

例如,要设置第4列的最小宽度,请将最后一行添加到代码中:

import Tkinter as tk
root = tk.Tk()

label = tk.Label(root, text = 'Label')
label.grid(column = 3, row = 8)

button = tk.Button(root, text = 'Button')
button.grid(column = 5, row = 1)

root.grid_columnconfigure(4, minsize=100)  # Here
如果要为所有列和行设置最小大小,可以使用以下命令遍历所有列和行:

col_count, row_count = root.grid_size()

for col in xrange(col_count):
    root.grid_columnconfigure(col, minsize=20)

for row in xrange(row_count):
    root.grid_rowconfigure(row, minsize=20)
编辑有趣的是,effbot声明:

minsize=定义行的最小大小。请注意,如果一行完全为空,则即使设置了此选项,也不会显示该行


(我的斜体字)但就我所尝试的而言,它似乎甚至对空的行和列也有效。

默认情况下,行的高度为零,列的宽度为零。因此,没有任何内容的行和列将不可见,并且不会占用任何空间。

除非我们不为特定列或行设置网格的minsize属性。因此,effbot中的内容是错误的(根据另一个答案),对吗?“NameError:name'xrange'未定义”。应该是range()@RussellStrauss。代码是用于python 2的。您正在Python3上运行它