我正在尝试使用 .grid() 来制作 tkinter 布局。我的所有按钮都在左侧对齐,我想在右侧放置一个文本框。问题是当我尝试这样做时,它会弄乱左侧的按钮。我尝试使用多个框架,但它似乎不起作用。有任何想法吗?
user1870035
问问题
968 次
2 回答
2
关于网格几何管理器的最重要的事情之一是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()
请注意,此处的典型用法是使用Frame
带有正确columnspan
和的网格rowspan
。然后您可以使用它来管理数据。我上面的替代方法是使用 aFrame
来保存所有按钮,然后在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()
于 2013-05-16T21:30:20.977 回答
1
如果您使用的是网格几何管理器,则不必将框架用于 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()
于 2013-05-16T21:30:37.840 回答