你有什么问题?简单的解决方案是使用grid
. 您可以在每个单元格中放置您想要的任何类型的小部件。是的,标签可以有边框。不过,制作网格线的一种简单方法是在每个单元格周围使用填充,这样框架的颜色就会通过间隙显示出来。
在一个框架中执行此操作。如果您需要能够滚动表格,请将框架放在画布内并添加滚动条。网络上到处都有关于如何使用画布创建可滚动框架的示例。
这是一个非常简单的示例,它仅使用标签,不滚动。我将把你需要的确切实现作为练习留给读者。
import Tkinter as tk
class ExampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
t = SimpleTable(self, 10,2)
t.pack(side="top", fill="x")
t.set(0,0,"Hello, world")
class SimpleTable(tk.Frame):
def __init__(self, parent, rows=10, columns=2):
# use black background so it "peeks through" to
# form grid lines
tk.Frame.__init__(self, parent, background="black")
self._widgets = []
for row in range(rows):
current_row = []
for column in range(columns):
label = tk.Label(self, text="%s/%s" % (row, column),
borderwidth=0, width=10)
label.grid(row=row, column=column, sticky="nsew", padx=1, pady=1)
current_row.append(label)
self._widgets.append(current_row)
for column in range(columns):
self.grid_columnconfigure(column, weight=1)
def set(self, row, column, value):
widget = self._widgets[row][column]
widget.configure(text=value)
if __name__ == "__main__":
app = ExampleApp()
app.mainloop()