我正在尝试使用.grid()来制作tkinter布局。我的所有按钮都在左侧对齐,我想在右侧放置一个文本框。问题是,当我尝试这样做时,它会弄乱左侧的按钮。我试过使用多个帧,但它似乎不起作用。有任何想法吗?
答案 0 :(得分:3)
关于网格几何管理器最重要的事情之一是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
。然后,您可以使用它来管理数据。我上面的替代方法是使用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()
答案 1 :(得分:2)
如果您使用的是网格几何管理器,则不必将帧用于2列布局。您可以使用rowspan
将“文本”窗口小部件的高度调整为按钮数:
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()