【发布时间】:2022-01-03 01:19:26
【问题描述】:
我有一个树形视图,我不希望它如此轻易地取消选择项目。当我尝试展开父节点时,我主要不希望它取消选择所有内容。
有什么方法可以让我使用按钮管理树视图取消选择,而不是将其全部留给小部件?
【问题讨论】:
-
是的,有办法实现这一目标
-
详细说明会很好
标签: python tkinter treeview ttk
我有一个树形视图,我不希望它如此轻易地取消选择项目。当我尝试展开父节点时,我主要不希望它取消选择所有内容。
有什么方法可以让我使用按钮管理树视图取消选择,而不是将其全部留给小部件?
【问题讨论】:
标签: python tkinter treeview ttk
其中一种方法是:
selectmode='none' 禁用鼠标左键选择import tkinter as tk
from tkinter import ttk
root = tk.Tk()
tree = ttk.Treeview(root, selectmode='none')
tree.pack()
# insert dummy data
for i in range(5):
node = tree.insert('', 'end', text=f'Node {i+1}')
for j in range(3):
tree.insert(node, 'end', text=f'Sub-note {i+1}.{j+1}')
def on_right_clicked(event):
row = tree.identify('row', event.x, event.y)
if row:
# select clicked item
tree.selection_set(row)
tree.bind('<3>', on_right_clicked)
root.mainloop()
然后展开父节点不会选择该节点。
更新:如果需要多选,请将tree.selection_set(...) 替换为tree.selection_toggle(...)。
【讨论】:
selection_toggle(row) 而不是selection_set(row) 进行多项选择。