我构建了一个用户填充分层表单的界面。过去的值显示在ttk.Treeview
中。
我允许用户通过单击树来编辑以前的值。该值将填写在可以编辑和覆盖的表单上。
问题:我在Entry
窗口小部件上插入的值仅在用户下次单击时显示,因此始终是1次点击滞后。请运行我的示例代码以便更好地理解。它变得令人困惑,因为如果用户点击一个值然后另一个值,它将显示之前点击的值。
它必须与tkinter中的事件处理例程有关,但我无法找到并回答。 我怎样才能摆脱这种滞后?
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def cb_clique(event):
item = tree.selection()[0]
entry1.delete(0, "end")
entry1.insert(0, item)
entry1 = tk.Entry(root, width=15)
entry1.grid(row=1,column=1)
tree = ttk.Treeview(root)
tree.bind("<Button-1>", cb_clique)
tree["columns"]=("valor")
tree.column("valor", width=200 )
tree.heading("valor", text="Valor")
tree.grid(row=3, column = 1, columnspan = 4)
tree.insert("", "end", iid = "Will display position",text = "Click me",
values=("a","b"))
tree.insert("", "end", iid = "Use position to get info",
text = "Click me", values=("a","b"))
root.mainloop()
答案 0 :(得分:1)
在窗口注意到选择已更改之前,看起来<Button-1>
事件触发,因此selection()
会返回您点击前选择的内容。尝试将事件绑定更改为<<TreeViewSelect>>
。
tree.bind("<<TreeviewSelect>>", cb_clique)