在不按 ctrl 键的情况下在 Tkinter 树视图中选择多个条目 [英] Select multiple entries in Tkinter treeview without pressing ctrl key

查看:43
本文介绍了在不按 ctrl 键的情况下在 Tkinter 树视图中选择多个条目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从 Tkinter 树视图中选择多个条目.我使用 selectmode = extended 相同(使用 ctrl+enter 键).但是,一旦我尝试在树中打开新分支(按 ctrl),我就无法打开,如果我在不按 ctrl 的情况下执行相同操作,我从分支 1 中的选择就会消失.

I am trying to select multiple entries from Tkinter treeview. I used selectmode = extended for the same(use ctrl+enter key). But as soon as I try to open new branch in the tree(ctrl pressed), I am not able to open and if I do the same without pressing ctrl my selections from branch 1 disappears.

因此,我试图在不按 ctrl 键的情况下从 Tkinter 树(来自不同分支)中选择多个节点的其他方法.(即记住我的鼠标选择或某些复选框或任何其他建议)

Hence, I am trying to get some other way for selecting multiple nodes from Tkinter tree (from different brances) without pressing ctrl key. (i.e either remembering my mouse selections or some checkbox or any other suggestion)

  • 这是一个工作代码示例,它适用于使用 ctrl 键在不同分支中进行多项选择,但我需要进行多项选择以在不同分支中选择节点而不按 ctrl,因为使用此我无法在选择第一个分支后打开新分支和如果已发布的节点打开但选项消失.

代码:

import ttk
import Tkinter as tk

def select():
    for i in tree.selection():
        item_iid = i
        print "".join([str(tree.item(i)['text'])])# for i in curItems])


root = tk.Tk()
tree = ttk.Treeview(root,show="tree")#, selectmode=EXTENDED)  
tree.config(columns=("col1"))

#SUb treeview
style = ttk.Style(root)
style.configure("Treeview")
tree.configure(style="Treeview")

tree.insert("", "0", "item1", text="Branch1",)
tree.insert("", "1", "item2", text="Branch2")

#sub tree using item attribute to achieve that
tree.insert("item1", "1", text="FRED")
tree.insert("item1", "1", text="MAVIS")
tree.insert("item1", "1", text="BRIGHT")

tree.insert("item2", "2", text="SOME")
tree.insert("item2", "2", text="NODES")
tree.insert("item2", "2", text="HERE")

tree.pack(fill=tk.BOTH, expand=True)
tree.bind("<Return>", lambda e: select()) 

root.mainloop()

预期:从不同分支中选择多个节点,无需按 ctrl 键

Expected: Select multiple nodes from different branches without pressing ctrl key

推荐答案

您需要做的第一件事是将 selectmode 设置为 None:

The first thing you need to do is to set selectmode to None:

tree = ttk.Treeview(root,show="tree", selectmode="none")

从这里开始,您可以自己处理选择事件.

From here onward you can handle the selection events yourself.

现在修改您的 select 函数以对焦点变化做出反应:

Now modify your select function to react on focus change:

def select(event=None):
    tree.selection_toggle(tree.focus())
    print tree.selection()

最后将其绑定到您喜欢的键,使用鼠标点击如下示例:

And finally bind it to a key you prefer, using mouse click as sample below:

tree.bind("<ButtonRelease-1>", select)

这篇关于在不按 ctrl 键的情况下在 Tkinter 树视图中选择多个条目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆