Pla*_*nom 5 python tkinter grid-layout python-3.x
我是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)
Run Code Online (Sandbox Code Playgroud)
Tkinter保持每个小部件的相对位置(即button在其上方和右侧label),但它忽略了它们之间的任何空间.我已经对这个问题进行了一些搜索并发现了weight,但这似乎并不是我正在寻找的; 我想要一些独立于label和button布局的东西.谢谢您的帮助!
您可以通过在窗口小部件的父窗口上运行grid_columnconfigure和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
Run Code Online (Sandbox Code Playgroud)
如果要为所有列和行设置最小大小,可以使用以下方法遍历它们:
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)
Run Code Online (Sandbox Code Playgroud)
编辑有趣的是,effbot声明:
minsize =定义行的最小大小.请注意,如果某行完全为空,则即使设置了此选项,也不会显示该行.
(italics mine)但是就我所尝试的情况而言,它似乎也适用于空的行和列.
| 归档时间: |
|
| 查看次数: |
20719 次 |
| 最近记录: |