![](/img/trans.png)
[英]How can I anchor a widget's position to a Treeview xview in python tkinter?
[英]How can I add a column to a Tkinter TreeView widget?
創建 Tkinter TreeView 小部件后,我需要將新列添加到它,但我找不到方法。 我已經嘗試使用configure
方法來修改樹的列屬性,但這會重置除圖標列之外的所有列。
我看到的唯一解決方案是將其配置為具有盡可能多的列,並使它們全部不可見,以便在需要添加列時使它們可見。 有沒有更好的辦法?
新手:我和你有同樣的問題。 我解決了它如下。
提示:在列名可用后初始化 Treeview。 在完成 Treeview 的初始化后,我在網絡上找不到任何添加新列的解決方案。
示例:--blah bhah 代碼---
def treecols(self,colnames=[],rowdata=[]):
self.tree = ttk.Treeview ( self.frame1,columns=colnames )
self.tree.grid ( )
for eachcol in colnames:
self.tree.heading(column=eachcol,text=eachcol)
self.tree.column(column=eachcol,width=100,minwidth=0)
所有的魔法都在 add_columns 方法中,剩下的就是獲取一個工作示例。 我希望這能回答您的問題(有點晚,但可能對其他人有幫助)。
import tkinter
import tkinter.ttk
class GUI():
def __init__(self, master):
self.view = tkinter.ttk.Treeview(master)
self.view.pack()
self.view.heading('#0', text='Name')
self.view.insert('', 'end', text='Foo')
self.view.insert('', 'end', text='Bar')
self.view['columns'] = ('foo')
self.view.heading('foo', text='foo')
self.view.set(self.view.get_children()[0], 'foo', 'test')
self.add_columns(('bar', 'blesh'))
def add_columns(self, columns, **kwargs):
# Preserve current column headers and their settings
current_columns = list(self.view['columns'])
current_columns = {key:self.view.heading(key) for key in current_columns}
# Update with new columns
self.view['columns'] = list(current_columns.keys()) + list(columns)
for key in columns:
self.view.heading(key, text=key, **kwargs)
# Set saved column values for the already existing columns
for key in current_columns:
# State is not valid to set with heading
state = current_columns[key].pop('state')
self.view.heading(key, **current_columns[key])
tk = tkinter.Tk()
GUI(tk)
tk.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.