【问题标题】:transfer treeview children to another treeview in tkinter将树视图子项转移到 tkinter 中的另一个树视图
【发布时间】:2019-03-15 09:53:39
【问题描述】:

我刚刚在 Stack Overflow 上创建了一个帐户,所以我想问一下如何将所有树视图数据行转移到另一个树视图?我做了一个在树视图中插入数据的函数,我想在另一个函数中将这些数据传输到另一个树视图中。我设法只转移了第一行。我很难做到这一点,任何形式的帮助都深表感谢。抱歉语法不好。

这是我的主树视图:

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】:

    您也应该使用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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-11
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2017-07-07
      • 1970-01-01
      相关资源
      最近更新 更多