Tkinter - Adding multiple columns to a Treeview

前端 未结 2 1694
难免孤独
难免孤独 2021-01-23 12:35

I want to add three columns to my Treeview and name them \'Varenavn\',\'Antall\',\'Best før\'. I tried the following:

self.tree = ttk.Treeview (height = 10, colu         


        
相关标签:
2条回答
  • 2021-01-23 13:20

    The value you give to the columns= argument isn't doing what you expect it to do.

    From the New Mexico Tech Tkinter reference:

    columns

    A sequence of column identifier strings. These strings are used internally to identify the columns within the widget. The icon column, whose identifier is always '#0', contains the collapse/expand icons and is always the first column.

    The columns you specify with the columns argument are in addition to the icon column.

    For example, if you specified columns=('Name', 'Size'), three columns would appear in the widget: first the icon column, then two more columns whose internal identifiers are 'Name' and 'Size'.

    So instead of a number, you should give it a tuple of names for the columns you want to create, and you should give one less than the total number of columns you want, since the first is always '#0'.


    To explain the error you're getting, when you use columns = 3 this gives the same result as using columns = ('3') would; you're actually only creating one column next to the '#0' column, which can be identified by either '#1' or '3'. When you try to access column '#2' you get an out of range error because there are only two columns.

    0 讨论(0)
  • 2021-01-23 13:36

    For example you need to specify

    self.tablex=ttk.Treeview(heigh=10,columns=("#0","#1","#2","#3"))
    

    and later

    self.tablex.heading('#0',text='Text0')
    self.tablex.heading('#1',text='Text1')
    self.tablex.heading('#2',text='Text2')
    self.tablex.heading('#3',text='Text3')
    
    0 讨论(0)
提交回复
热议问题