在Tkinter Treeview中显式标记一行

时间:2018-12-31 13:48:34

标签: python tkinter treeview

我正在尝试在树状视图列中选中一行。

BadgesView.tag_configure("BadgeOfTheWeek", background="yellow")

在对这一行进行标记之前或之后,我希望其他行将程序删除其所有标记。

for row in Treeview:
    remove tag from row.

我不确定这是否可行,因为我很难确定所选的行是哪一行,以及从哪一行进行标记。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

问题:...另一个rows已删除其所有tags


  

Tkinter 8.5 reference - 45. ttk.Treeview
   首先,一些定义:
  item
  在窗口小部件中显示的实体之一。对于文件浏览器,项目可能是目录或文件。   每个项目都与文本标签相关联,也可能与图像相关联。
  iid
  树中的每个项目都有一个唯一的标识符字符串,称为iid。您可以自己提供iid值,也可以让ttk生成它们。


  

Treeview items之前:

item:{'text': 'Text_1', 'values': '', 'tags': ['ALL'], 'image': '', 'open': 0}
item:{'text': 'Text_2', 'values': '', 'tags': ['BadgeOfTheWeek', 'ALL'], 'image': '', 'open': 0}
item:{'text': 'Text_3', 'values': '', 'tags': ['ALL'], 'image': '', 'open': 0}
  • 环绕Treeview以获取项目的iid

    for iid in self.tree.get_children():
    
  • 条件:'BadgeOfTheWeek' not in 当前的item(iid) tags

        if not 'BadgeOfTheWeek' in self.tree.item(iid)['tags']:
    
  • 要从此tags中删除所有item(iid) ,请将tags=设置为空的listset < / p>

            self.tree.item(iid, tags=[])
    
  

Treeview items之后:

item:{'text': 'Text_1', 'values': '', 'tags': '', 'image': '', 'open': 0}
item:{'text': 'Text_2', 'values': '', 'tags': ['BadgeOfTheWeek', 'ALL'], 'image': '', 'open': 0}
item:{'text': 'Text_3', 'values': '', 'tags': '', 'image': '', 'open': 0}

使用Python测试:3.5-TkVersion:8.6