0

我正在尝试使用 .grid() 来制作 tkinter 布局。我的所有按钮都在左侧对齐,我想在右侧放置一个文本框。问题是当我尝试这样做时,它会弄乱左侧的按钮。我尝试使用多个框架,但它似乎不起作用。有任何想法吗?

4

2 回答 2

2

关于网格几何管理器的最重要的事情之一是columnspanrowspan关键字:

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 回答