あなたはどんな問題を抱えていますか?単純な解決策は、grid
を使用してウィジェットをレイアウトすることです。各セルに必要なウィジェットのタイプを入れておくことができます。そして、はい、ラベルは境界線を持つことができます。ただし、グリッド線を作成する簡単な方法は、各セルの周囲にパディングを使用して、フレームの色がギャップを通って表示されるようにすることです。
これをフレームで行います。テーブルをスクロールできるようにする必要がある場合は、フレームをキャンバス内に置き、スクロールバーを追加します。キャンバスを使用してスクロール可能なフレームを作成する方法については、Web上に例があります。
ここでは、ラベルだけを使用してスクロールしない、本当に簡単な例です。読者のための練習として必要なものを正確に実装しておきます。
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()
で入手可能なすべての/tkinter.unpythonic.net/wiki/TkTable)? – Simon
私は使用しているPCでダウンロードできません...ブロックされています! – user2063
でもこのhttp://tkinter.unpy.net/wiki/TkTableWrapper? – Simon