我尝试使用after / time.sleep更新树视图,但是它不适用于mainloop。
我的问题是:
脚本1:
class Page_one(tk.Frame):
def __init__(self, parent, controller):
mainframe=tk.Frame.__init__(self, parent)
self.controller = controller
#treeview widget attached to page_one
tree1=Treeviews(...)
tree1.place(x=880,y=25)
#Question1: How can I update the treeview widget with real-time data?
#Question2: is there a way that I can change all treeview children simuteniously? (I dont want to delete all children and insert again)
脚本2:
bootstrap column
我的问题是:可能有人向我展示了一个可用于更新第二个脚本中的小部件的结构。
答案 0 :(得分:0)
您可以使用public void set_bedehkariha_list() {
new DownloadTask().execute();
}
方法修改树形视图小部件:
item
在创建商品时会返回该商品的ID。您可以通过将上面的代码放入for循环中来更改所有treeview子级:
tree.item(<item id>, text='new text', values=(...))
for item in tree.get_children(<parent>):
tree.item(item, text='new text', values=(...))
返回项目的子项(“表示树的根”。
根据您的问题,我了解到您有一些单独的过程来生成数据,并且您想用生成的新数据定期更新树视图内容。使用tree.get_children(<parent>)
将冻结主循环,因此您应使用time.sleep
tkinter方法:after
将等待给定时间,然后执行tree.after(<time in ms>, callback, *args)
。如果您想定期进行回调,诀窍是在callback(*args)
内再次调用after
,例如:
callback
因此,一旦启动def callback(x, y):
# do something with x and y ...
tree.after(2000, callback, x, y)
,它将每2秒执行一次。
这是一个带有树视图的示例:
callback(0, 2)