[英]Printing and inserting selected row in treeview into tkinter entry widget
我有以下代码可以在entry
小部件中打印和插入选定的treeview
行,但在如何执行方面遇到了挑战。我的List profile
没有在treeview
正确显示内容,我希望年份出现在列指定下和月份一样。
当我选择该行时,它会将('end',)
打印到我的终端并在我的两个entry
小部件中插入end
而不是选定的。
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()
首先,您需要遍历您的profile
列表以填充树视图:
for values in profile:
tree.insert("", END, values=values)
你在做什么:
tree.insert("", 1, END, values=profile)
创建了一行,项目名称为 'end' 并为profile
的前两个元组赋值。
我猜您想在e1
插入所选行的年份,在e2
插入月份。 但是, tree.selection()
为您提供所选项目的名称,而不是值,但您可以使用year, month = tree.item(nm, 'values')
获取它们。 所以content
函数变成
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.