簡體   English   中英

如何將列添加到 Tkinter TreeView 小部件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM