Tkinter.grid 间距选项?
Tkinter.grid spacing options?
我是 Tkinter 的新手,我尝试使用网格布局管理器创建一个应用程序。但是,我似乎无法找到一种方法来按照我想要的方式使用它。我需要做的是模拟一个充满 'cells' 的网格,这样我就可以在单元格 (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 保留每个小部件的相对位置(即 button
在 label
的上方和右侧),但它会忽略中间的任何 space。我搜索了一下这个问题,发现了 weight
,但这似乎不是我要找的;我想要独立于 label
和 button
布局的东西。感谢您的帮助!
您可以通过 运行 小部件父级上的 grid_columnconfigure
and grid_rowconfigure
方法(在本例中为, 父级为 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=Defines the minimum size for the row. Note that if a row is completely empty, it will not be displayed, even if this option is set.
(我的斜体)但据我所试,它似乎对空行和空列也有效。
默认情况下,行高为零,列宽为零。因此,其中没有任何内容的行和列将不可见并且不占用 space.
我是 Tkinter 的新手,我尝试使用网格布局管理器创建一个应用程序。但是,我似乎无法找到一种方法来按照我想要的方式使用它。我需要做的是模拟一个充满 'cells' 的网格,这样我就可以在单元格 (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 保留每个小部件的相对位置(即 button
在 label
的上方和右侧),但它会忽略中间的任何 space。我搜索了一下这个问题,发现了 weight
,但这似乎不是我要找的;我想要独立于 label
和 button
布局的东西。感谢您的帮助!
您可以通过 运行 小部件父级上的 grid_columnconfigure
and grid_rowconfigure
方法(在本例中为, 父级为 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=Defines the minimum size for the row. Note that if a row is completely empty, it will not be displayed, even if this option is set.
(我的斜体)但据我所试,它似乎对空行和空列也有效。
默认情况下,行高为零,列宽为零。因此,其中没有任何内容的行和列将不可见并且不占用 space.