<p>如果您准备覆盖widget,您可能有非常定制的需求,或者可能有一个更适合您需要的widget。如果您不打算使用treeview,也许table小部件将提供您想要的东西。您可以控制单个单元格的内容,它允许用户编辑单元格(默认情况下),并且可以独立于其他单元格控制“活动”单元格属性。使用此代码将数据放入表中。在</p>
<pre><code>import tkinter as tk
import tkinter.ttk as ttk
from tkinter.tktable import Table as ttkTable
from tkinter.tktable import ArrayVar
class App(tk.Frame):
def __init__(self, parent, *args, **kwargs):
ttk.Frame.__init__(self, parent, *args, **kwargs)
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
parent.grid_columnconfigure(0, weight=1)
parent.grid_rowconfigure(0, weight=1)
self.content = ArrayVar(parent)
self.table = ttkTable(rows=4, cols=4, titlerows=1,
titlecols=0, roworigin=0, colorigin=0, anchor='w',
selecttype='cell', rowstretch='none', colstretch='unset',
flashmode='off', ellipsis='...', ipadx=2, colwidth=12,
multiline=False, resizeborders='col', selectmode='browse',
cursor='arrow', insertwidth=2, variable=self.content,
insertbackground='white'
)
self.table.tag_configure('title', relief='raised', anchor='center', bg='blue',
fg='white', state='disabled'
)
self.table.tag_configure('active', bg='gray30', fg='white')
c_headers = ["Name", "Date", "Time", "Loc"]
for col, word in enumerate(c_headers, start=0):
index = '0,' + str(col)
self.table.set('col', index, word)
self.table.width((0,1,2,3), (30,30,30,40))
self.table.set('row','1,0', "John","2017-02-05","11:30:23","Airport")
self.table.set('row','2,0', "Betty","2014-06-25","18:00:00","Orchard Road")
self.table.grid(sticky='news')
</code></pre>