复制 Tkinter 树视图
Duplicating a Tkinter treeview
我正在尝试在另一个 window 中显示 ttk 树视图。似乎唯一的选择是遍历原始树视图并相应地填充新树视图。
但是我似乎无法将所有(许多)子文件夹放在正确的位置,从 2d 级别开始,所有内容都混淆了(即,我得到了正确的根文件夹及其子文件夹,然后是子文件夹似乎是随机插入的。
函数是:
def getsubchildren(item=''):
children = []
for child in original_treeview.get_children(item):
i = new_treeview.insert(item, 'end', text=original_treeview.item(child)
['text'],values=original_treeview.item(child)['values'])
children.append(i)
for subchild in children:
getsubchildren(subchild)
并用 getsubchildren(item='')
调用函数,从第一层开始迭代。
一定是我做错了什么,但我无法确定问题所在,而且我尝试修改函数的结果也很差。
有什么想法吗?
谢谢,
在不知道项目深度的情况下,您需要检查项目是否有子项。如果是这样,您需要函数在循环中调用自身。这是一个工作示例:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
maintree = ttk.Treeview(root)
maintree.pack()
first = maintree.insert("","end",text='first')
second= maintree.insert(first,"end",text='second')
third= maintree.insert(second,"end",text='third')
fourth= maintree.insert(third,"end",text='fourth')
st = maintree.insert("","end",text='1st')
nd= maintree.insert(st,"end",text='2nd')
rd= maintree.insert(nd,"end",text='3rd')
th= maintree.insert(rd,"end",text='4th')
top = tk.Toplevel(root)
subtree = ttk.Treeview(top)
subtree.pack()
def copy_item_tree(item,child):
for child in maintree.get_children(child):
item = subtree.insert(item,"end",
text=maintree.item(child)['text'])
if maintree.get_children(child):
copy_item_tree(item,child)
def copy_tree():
for child in maintree.get_children():
item = subtree.insert("","end",text=maintree.item(child)['text'])
copy_item_tree(item,child)
button = tk.Button(root,text='Copy Tree', command=copy_tree)
button.pack(fill='x')
root.mainloop()
我正在尝试在另一个 window 中显示 ttk 树视图。似乎唯一的选择是遍历原始树视图并相应地填充新树视图。
但是我似乎无法将所有(许多)子文件夹放在正确的位置,从 2d 级别开始,所有内容都混淆了(即,我得到了正确的根文件夹及其子文件夹,然后是子文件夹似乎是随机插入的。
函数是:
def getsubchildren(item=''):
children = []
for child in original_treeview.get_children(item):
i = new_treeview.insert(item, 'end', text=original_treeview.item(child)
['text'],values=original_treeview.item(child)['values'])
children.append(i)
for subchild in children:
getsubchildren(subchild)
并用 getsubchildren(item='')
调用函数,从第一层开始迭代。
一定是我做错了什么,但我无法确定问题所在,而且我尝试修改函数的结果也很差。
有什么想法吗?
谢谢,
在不知道项目深度的情况下,您需要检查项目是否有子项。如果是这样,您需要函数在循环中调用自身。这是一个工作示例:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
maintree = ttk.Treeview(root)
maintree.pack()
first = maintree.insert("","end",text='first')
second= maintree.insert(first,"end",text='second')
third= maintree.insert(second,"end",text='third')
fourth= maintree.insert(third,"end",text='fourth')
st = maintree.insert("","end",text='1st')
nd= maintree.insert(st,"end",text='2nd')
rd= maintree.insert(nd,"end",text='3rd')
th= maintree.insert(rd,"end",text='4th')
top = tk.Toplevel(root)
subtree = ttk.Treeview(top)
subtree.pack()
def copy_item_tree(item,child):
for child in maintree.get_children(child):
item = subtree.insert(item,"end",
text=maintree.item(child)['text'])
if maintree.get_children(child):
copy_item_tree(item,child)
def copy_tree():
for child in maintree.get_children():
item = subtree.insert("","end",text=maintree.item(child)['text'])
copy_item_tree(item,child)
button = tk.Button(root,text='Copy Tree', command=copy_tree)
button.pack(fill='x')
root.mainloop()