【问题标题】:How to make table out of lists using TreeView Tkinter Python如何使用 TreeView Tkinter Python 从列表中制作表格
【发布时间】:2021-01-01 13:25:06
【问题描述】:

我想要的是如何使用 TreeView Tkinter 创建一个表,并且要插入到表中的数据应该来自列表。

例如:

这是我的清单

ID = [1,2,3,4,5]
Names = ['Tom', 'Rob', 'Tim', 'Jim', 'Kim']

我想创建一个标题为“ID”和“名称”的表,我不想将每个值分别放在表中。好吧,这是一个小列表,但即使我想创建一个更大的表。那么谁能告诉我如何将这些列表数据自动插入表中(循环)。

【问题讨论】:

    标签: python python-3.x tkinter treeview


    【解决方案1】:

    只需像这样使用for 循环:

    from tkinter import ttk 
    import tkinter as tk 
    
    ID = [1,2,3,4,5, 6, 7, 8, 9]
    Names = ['Tom', 'Rob', 'Tim', 'Jim', 'Kim', 'Kim', 'Kim', 'Kim']
      
    window = tk.Tk() 
    
    treev = ttk.Treeview(window, selectmode ='browse') 
    treev.pack(side='left',expand=True, fill='both') 
      
    
    verscrlbar = ttk.Scrollbar(window,  
                               orient ="vertical",  
                               command = treev.yview) 
      
    verscrlbar.pack(side ='right', fill ='y')   
    treev.configure(yscrollcommand = verscrlbar.set) 
    
      
    treev["columns"] = ('1', '2') 
    
    treev['show'] = 'headings'
      
    treev.column("1", width = 90, anchor ='c') 
    treev.column("2", width = 90, anchor ='c') 
    
    
    treev.heading("1", text ="ID") 
    treev.heading("2", text ="Names") 
      
    for x, y in zip(ID, Names):
        treev.insert("", 'end', values =(x, y)) 
    
    window.mainloop() 
    

    如果您想要更好的方法,请使用字典:

    
    from tkinter import ttk 
    import tkinter as tk 
    
    titles={'Id': [1,2,3,4,5, 6, 7, 8, 9], 'Names':['Tom', 'Rob', 'Tim', 'Jim', 'Kim', 'Kim', 'Kim', 'Kim', 'Kim'], 'Column': [1,2,3,4,5, 6, 7, 8, 9]}
    
      
    window = tk.Tk() 
    
    treev = ttk.Treeview(window, selectmode ='browse') 
    treev.pack(side='left',expand=True, fill='both') 
      
    
    verscrlbar = ttk.Scrollbar(window,  
                               orient ="vertical",  
                               command = treev.yview) 
      
    verscrlbar.pack(side ='right', fill ='y')   
    treev.configure(yscrollcommand = verscrlbar.set) 
    
    treev["columns"] = list(x for x in range(len(list(titles.keys()))))
    treev['show'] = 'headings'
    
      
    for x, y in enumerate(titles.keys()):
        treev.column(x, minwidth=20, stretch=True,  anchor='c')
        treev.heading(x, text=y)
    
    for args in zip(*list(titles.values())):
        treev.insert("", 'end', values =args) 
    
    window.mainloop() 
    

    【讨论】:

    • 非常感谢,嗯,让我看看代码并尝试理解它,然后单击勾号图标。再次感谢
    • 因此,当我尝试执行我的操作时,我收到了 -index 缺失的错误,我插入了您认为我得到的原因。
    • 没关系,我修好了,对不起,给你添麻烦了。再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2018-05-10
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多