将treeview子项传输到tkinter中的另一个树视图

问题描述 投票:0回答:1

刚刚创建了一个帐户,我只想询问是否可以将所有树视图数据行传输到另一个树视图?我创建了一个在树视图中插入数据的函数,我想在另一个函数中将这些数据传输到另一个树视图中,我设法转移第一排,但我很难完成这一任务,任何形式的帮助都深受赞赏。抱歉英语不好。

这是我的主要树视图:

    cartTreeView = ttk.Treeview( posWindowCanvas )
    cartTreeView[ "show" ] = "headings"
    cartTreeView[ "columns" ] = ( "Sales ID", "Product Code", "Name", "Price", "Quantity", "Total" )
    cartTreeView.heading( "Sales ID", text = "Sales ID", anchor = W )
    cartTreeView.heading( "Product Code", text = "Product Code", anchor = W )
    cartTreeView.heading( "Name", text = "Name", anchor = W )
    cartTreeView.heading( "Price", text = "Price", anchor = W )
    cartTreeView.heading( "Quantity", text = "Quantity", anchor = W )
    cartTreeView.heading( "Total", text = "Total", anchor = W )

这是将数据添加到树视图中的函数:

      def addNow():

            getTreeValue = productsTreeView.focus()
            selected = productsTreeView.item( getTreeValue )
            total = float( selected["values"][2] ) * productQuantity.get()
            roundedUp = round( total, 2 )
            cartTreeView.insert( "", "end" , text = "", values = ( "000", str(selected["values"][0]), selected["values"][1], selected["values"][2], productQuantity.get(), roundedUp ) )

这是创建另一个树视图的函数,这是我希望显示主树视图中的数据的地方。

    def transactNow():


        transactNowWindow = Toplevel()
        transactNowWindow.title( "Transaction Window" )
        transactNowWindow.geometry( "725x290" )
        transactNowWindow.resizable( height = False, width = False )

        transactNowWindowCanvas = Canvas( transactNowWindow, height = 550, width = 280, bg = "gray84" )
        transactNowWindowCanvas.pack( fill = BOTH )



        cartTreeView2 = ttk.Treeview( transactNowWindowCanvas )
        cartTreeView2[ "show" ] = "headings"
        cartTreeView2[ "columns" ] = ( "Sales ID", "Product Code", "Name", "Price", "Quantity", "Total" )
        cartTreeView2.heading( "Sales ID", text = "Sales ID", anchor = W )
        cartTreeView2.heading( "Product Code", text = "Product Code", anchor = W )
        cartTreeView2.heading( "Name", text = "Name", anchor = W )
        cartTreeView2.heading( "Price", text = "Price", anchor = W )
        cartTreeView2.heading( "Quantity", text = "Quantity", anchor = W )
        cartTreeView2.heading( "Total", text = "Total", anchor = W )
        cartTreeView2.column( "Sales ID", minwidth = 0, width = 55, stretch = NO )
        cartTreeView2.column( "Product Code", minwidth = 0, width = 90, stretch = NO )
        cartTreeView2.column( "Name", minwidth = 0, width = 325, stretch = NO )
        cartTreeView2.column( "Price", minwidth = 0, width = 80, stretch = NO )
        cartTreeView2.column( "Quantity", minwidth = 0, width = 55, stretch = NO )
        cartTreeView2.column( "Total", minwidth = 0, width = 80, stretch = NO )
        cartTreeView2.place( x = 10, y = 10 )

        cartTreeViewScrollBar = ttk.Scrollbar( transactNowWindowCanvas, orient = "vertical", command = cartTreeView2.yview )
        cartTreeViewScrollBar.place( x = 698, y = 10, height = 227 )
        cartTreeView2.configure( yscrollcommand = cartTreeViewScrollBar.set )

        for child in cartTreeView.get_children():
                cartList.append( cartTreeView.item( child )["values"] )


        cartTreeView2.insert( "", "end", text = "", values = ( cartList[0][0], cartList[0][1], cartList[0][2], cartList[0][3], cartList[0][4], cartList[0][5] ) )

我的问题是我只能插入一行。但我想在另一个树视图中插入所有行。

        for child in cartTreeView.get_children():
                cartList.append( cartTreeView.item( child )["values"] )


        cartTreeView2.insert( "", "end", text = "", values = ( cartList[0][0], cartList[0][1], cartList[0][2], cartList[0][3], cartList[0][4], cartList[0][5] ) )
tkinter treeview ttk
1个回答
1
投票

你应该用pythontkinter标记这个。

无论如何,这里是如何将数据从一棵树转移到另一棵树。

from tkinter import *
from tkinter import ttk

root = Tk()

tree_a = ttk.Treeview(root)
tree_a.pack()
tree_a["columns"] = ("1","2","3","4","5")
for i in range(5):
    tree_a.insert("",0,text=i,values=(i,i,i,i,i))

tree_b = ttk.Treeview(root)
tree_b.pack()
tree_b["columns"] = ("1","2","3","4","5")

def click():
    for child in tree_a.get_children():
        tree_b.insert("",0,text=tree_a.item(child)["text"],values=tree_a.item(child)["values"])

Button(root,text="Click",command=click).pack()

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.