【发布时间】:2013-05-11 22:55:38
【问题描述】:
我正在尝试使用 .grid() 来制作 tkinter 布局。我的所有按钮都在左侧对齐,我想在右侧放置一个文本框。问题是当我尝试这样做时,它会弄乱左侧的按钮。我尝试使用多个框架,但它似乎不起作用。有任何想法吗?
【问题讨论】:
标签: python layout grid tkinter frame
我正在尝试使用 .grid() 来制作 tkinter 布局。我的所有按钮都在左侧对齐,我想在右侧放置一个文本框。问题是当我尝试这样做时,它会弄乱左侧的按钮。我尝试使用多个框架,但它似乎不起作用。有任何想法吗?
【问题讨论】:
标签: python layout grid tkinter frame
关于网格几何管理器最重要的一点是 columnspan 和 rowspan 关键字:
import Tkinter as tk
root = tk.Tk()
buttons = [tk.Button(root,text=str(i)) for i in range(6)]
for i,b in enumerate(buttons):
b.grid(row=i,column=0)
textbox = tk.Text(root)
textbox.grid(row=0,column=1,rowspan=6)
root.mainloop()
请注意,这里的典型用法是使用带有正确columnspan 和rowspan 网格的Frame。然后您可以使用它来管理数据。我上面的替代方法是使用Frame 来保存所有按钮,然后在它旁边网格化Text 小部件:
import Tkinter as tk
root = tk.Tk()
frame = tk.Frame(root)
frame.grid(row=0,column=0)
buttons = [tk.Button(frame,text=str(i)) for i in range(6)]
for i,b in enumerate(buttons):
b.grid(row=i,column=0)
textbox = tk.Text(root)
textbox.grid(row=0,column=1)
root.mainloop()
【讨论】:
如果您使用的是网格几何管理器,则不必为 2 列布局使用框架。您可以使用rowspan 将 Text 小部件的高度调整为按钮的数量:
from Tkinter import *
root = Tk()
N = 5
for i in range(N):
Button(root, text="Button %s" % i).grid(row=i, column=0, padx=5)
Text(root, width=30).grid(row=0, column=1, rowspan=N, padx=5)
root.mainloop()
【讨论】: