Явно пометить строку в дереве tkinter - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь пометить одну строку в столбце древовидного списка, когда она выбрана.

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

До или после того, как эта строка помечена, я хочу, чтобы другие строки удалили все свои теги программой.

for row in Treeview:
    remove tag from row.

Я не уверен, возможно ли это, поскольку мне трудно определить, какая строка является выбранной строкой, а из той, какую строку пометить.

Любая помощьценится.

1 Ответ

0 голосов
/ 01 января 2019

Вопрос : ... другие rows должны удалить все свои tags


Tkinter 8.5ссылка - 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' is not in текущий item(iid) tags.

        if not 'BadgeOfTheWeek' in self.tree.item(iid)['tags']:
    
  • К удалить все tags из этого item(iid), установить tags= в пустое list или set

            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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...