【发布时间】:2021-10-17 16:56:47
【问题描述】:
这是我目前所拥有的简化版本:
def run():
i = 1
j = 0
while i < 4:
i = i+1
res1 = s.read(10)
decodedres1 = res1.decode()
a = decodedres1.replace("\r\n" , "")
res2 = s.read(50)
decodedres2 = res2.decode()
b = decodedres2.replace("\r\n" , "")
time = str(j)
j = j + 5
time.sleep(2)
values = [time, a, b]
print(values)
Etable.insert('', 'end', values=values)
runningbtn = Button(root,command=run,text="Run")
runningbtn.grid(row=4,column=0,padx=13,pady=13)
Elist=['Time','Parameter1','Parameter2']
Etable=ttk.Treeview(root,column=Elist,show='headings',height=7)
for d in Elist:
Etable.heading(d,text=d.title())
Etable.grid(row=5,column=0,padx=7,pady=7,columnspan=3)
我希望我从机器上读取的数据每 2 秒在桌子上打印 3 次,我想我相应地将表格的值放在循环下。
相反,数据会累积起来,然后在 6 秒后一次性打印在表格上。我已经尝试为它编写一个单独的循环,重新排列值块的位置,重写循环并调试它,但是数据一直持续输出一次,有什么提示吗?
【问题讨论】:
-
好的,很简单,不要在与
tkinter相同的线程或进程中使用循环(while,for),而是使用.after()“loops”(或根据具体情况启动一个新线程)每次迭代需要多长时间)
标签: python tkinter pycharm python-3.9 issue-tracking