如何在tkinter的treeview中添加新的subheadings子项?

时间:2019-10-23 12:18:57

标签: tkinter treeview

我想要的

我想在树形视图中添加新的子项。当前,在添加第一组后,它是这样的:

enter image description here

我的专栏

columns1=['is up', 'duplex', 'speed', 'mtu']
columns2=['NIC addr', 'netmask addr', 'broadcast addr']

用于插入第一列值的代码

 for k,v in network_nic_meta.items():

           itemid1 =self.tree1.insert('', 'end', text="network info", values=(k,k))
           list=v

           i=0

           for data in list:

                 self.tree1.insert(itemid1, 'end', text=columns1[i], values=(data))
                 i+=1 

我想在第二列中附加其值,并在其中插入第一个column1值

我尝试过的事情

   for k, v in network_nic.items():
        # itemid2 = self.tree1.insert('', 'end', text="network info", values=(k))
        list=v

        i=0
        for data in list:

            self.tree1.insert(itemid1, 'end', text=columns2[i], values=(data.address, data.netmask,data.broadcast))
            i+=1

我得到的东西

enter image description here

1 个答案:

答案 0 :(得分:0)

所以我终于以这种方式解决了这个问题,但我会尝试提高这种算法的效率 subheadings

   idRoot=[]
   value=[]
   fieldList=[]
   key=[]



   #add network names
   once=0
   for k,v in network_nic_meta.items():

           key.append(k)
           if(once==0):
               fieldList.append(v._fields)
               once+=1


           value.append(v)


   for network_name in key:
       node =self.tree1.insert('', 'end', text="network info", values=(network_name,network_name))
       idRoot.append(node)


   # #
   first = 0
   second = 4
   k=0
   # for k in range(len(idRoot)):
   for subitem in value:
           val_ = subitem[first:second]

           for index in range(len(val_)):
              self.tree1.insert(idRoot[k],index,text=fieldList[0][index], values=(val_[index]))
           k+=1

   q = collections.deque()
   masterList=[]
   value=[]
   copyValue=[]
   for k, v in network_nic.items():
       i=1
       for index in range(len(v)):
            value.append(v[index].address)
            value.append(v[index].netmask)
            value.append(v[index].broadcast)

            if(i==len(v)):
                copyValue=value.copy()
                q.append(copyValue)
                masterList.append(copyValue)
                value.clear()
            i+=1
   j=0

   for index in range(len(idRoot)):
      count = 1
      for data in masterList[index]:

               self.tree1.insert(idRoot[index], "end", text=columns1[j]+" "+str(count), values=(data, data, data))
               j+=1
               if(j==3):
                 j=0
                 count += 1