Bạn đang gặp phải sự cố gì? Giải pháp đơn giản là bố trí các vật dụng bằng cách sử dụng grid
. Bạn có thể đặt bất kỳ loại tiện ích nào bạn muốn trong mỗi ô. Và có, nhãn có thể có đường viền. Mặc dù, một cách đơn giản để làm các đường lưới là sử dụng một vùng đệm xung quanh mỗi ô, do đó màu của khung sẽ hiển thị thông qua các khoảng trống.
Thực hiện việc này trong khung. Nếu bạn cần để có thể di chuyển bảng, hãy đặt khung bên trong canvas và thêm thanh cuộn. Có các ví dụ trên web để biết cách tạo khung có thể cuộn bằng canvas.
Đây là ví dụ thực sự nhanh chóng chỉ sử dụng nhãn và không cuộn. Tôi sẽ để lại việc thực hiện chính xác những gì bạn cần như một bài tập cho người đọc.
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()
Nguồn
2012-06-15 11:15:29
gì là sai với [TkTable] (http://tkinter.unpythonic.net/wiki/TkTable)? – Simon
Tôi không thể tải xuống trên máy tính tôi đang sử dụng ... tất cả đều bị chặn! – user2063
thậm chí http://tkinter.unpy.net/wiki/TkTableWrapper này? – Simon