简体   繁体   中英

Printing and inserting selected row in treeview into tkinter entry widget

I have the following code to print and insert selected treeview row in an entry widget but am having challenges on how to do it.My List profile doesn't display the content correctly in the treeview , i want the year to appear under column specify for same as the month.

When i select the row it prints ('end',) to my terminal and inserts end in my both entry widget and not the selected.

from tkinter import *
from tkinter import ttk


profile = [("2012", "JANUARY"),
           ("2013", "FEBRUARY"),
           ("2014", "MARCH"),
           ("2015", "APRIL"),
           ("2016", "MAY")
           ]


def content(event):
    print(tree.selection()) # this will print the row inserted

    for nm in tree.selection():
        e1.insert(END, nm)
        e2.insert(END, nm)


root = Tk()

tree = ttk.Treeview(root, columns=("columns1","columns2" ), show="headings", 
selectmode="browse")
tree.heading("#1", text="YEAR")
tree.heading("#2", text="MONTH")
tree.insert("", 1, END, values=profile)

tree.bind("<<TreeviewSelect>>", content)
tree.pack()

e1 = Entry(root)
e1.pack()
e2 = Entry(root)
e2.pack()

root.mainloop()

First of all, you need to iterate over your profile list to populate the treeview:

for values in profile:
    tree.insert("", END, values=values)

What you were doing:

tree.insert("", 1, END, values=profile)

created one row, with item name 'end' and values the first two tuple of profile .

I guess that you want to insert the year of the selected row in e1 and the month in e2 . However, tree.selection() gives you the selected items' name, not the values, but you can get them with year, month = tree.item(nm, 'values') . So the content function becomes

def content(event):
    print(tree.selection()) # this will print the names of the selected rows

    for nm in tree.selection():
        year, month = tree.item(nm, 'values')
        e1.insert(END, year)
        e2.insert(END, month)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM