如何在等待进一步数据时使Python龟窗响应

时间:2018-04-12 07:22:25

标签: python loops turtle-graphics

我的代码获取笔记本电脑的电池数据,并使用Python龟中的数据生成图表。 该代码每2分钟获取一个数据点并将其打印在龟屏幕上。问题是,在等待另一个数据点时,乌龟窗口没有响应,我无法激活它。

当我最后添加turtle.done()时,龟窗工作正常但是我关闭龟窗后代码没有继续,我不想要,我希望窗口一直可见

有没有什么好方法让窗口“行动”,就像使用turtle.done()一样,但它会继续循环?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的需求,那么您可以使用海龟屏幕的ontimer()方法。你想要done()将控制权交给tkinter的事件循环。但是通过有一个ontimer()事件,它会重新唤起它作为它做的最后一件事,你可以让事件友好的代码不断检查更多的数据点。大致是:

from turtle import Turtle, Screen

def my_update():
    #  get the new data
    # ...

    # draw the new data
    turtle.forward(...)  

    # reinvoke one-shot (5 secs. from now)
    screen.ontimer(my_update, 5000)

screen = Screen()

turtle = Turtle()

# invoke one-shot (5 secs. from now)
screen.ontimer(my_update, 5000)

screen.mainloop()