如何刷新tkinter入门值?我得到一次点击滞后

时间:2015-06-25 14:04:47

标签: python python-3.x tkinter

我构建了一个用户填充分层表单的界面。过去的值显示在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()

1 个答案:

答案 0 :(得分:1)

在窗口注意到选择已更改之前,看起来<Button-1>事件触发,因此selection()会返回您点击前选择的内容。尝试将事件绑定更改为<<TreeViewSelect>>

tree.bind("<<TreeviewSelect>>", cb_clique)