繁体   English   中英

Tkinter.grid间距选项?

[英]Tkinter.grid spacing options?

我是Tkinter的新手,我尝试使用网格布局管理器创建应用程序。 但是,我似乎找不到按照我想要的方式使用它的方法。 我需要做的是模拟一个充满'单元格'的网格,以便我可以放置单元格(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上方和右侧),但它忽略了它们之间的任何空间。 我已经搜索了一下这个问题,发现了weight ,但这似乎并不是我想要的; 我想要一些独立于labelbutton布局的东西。 谢谢您的帮助!

您可以通过在窗口小部件的父grid_rowconfigure上运行grid_columnconfiguregrid_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 =定义行的最小大小。 请注意,如果某行完全为空,则即使设置了此选项,也不会显示该行。

(italics mine)但是就我所尝试的情况而言,它似乎也适用于空的行和列。

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

暂无
暂无

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

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