我想画一条线,但不是瞬间,因为它通常与DrawLine()一起出现。我希望它快速,但只是足够慢,你可以告诉它被绘制。
我已经尝试过测试一个for循环,它一次绘制一行像素,睡眠时间为.05秒,但它似乎没有绘制任何一个,直到for循环结束它吸引它所有,即刻。我认为这与它没有通过主循环获取绘制动作有关,所以我在绘制线上使用了CallAfter,这也没有用。
似乎应该有一种方法可以简单地告诉drawline在x秒的过程中绘制它,或者通过动画对象发送它,你可以在其中指定帧数等等。不确定在哪里看。有什么建议吗?
答案 0 :(得分:1)
问题是time.sleep(...)
也会阻止GUI作为for循环本身。 wx.Yield
通常应该发出信号" GUI,我已经停止了耗时的过程,做任何你现在要做的事情"。但根据经验,这基本上没有用(我还没有找到原因)。
因此,您可以使用sleep
(Link to wxPython Phoenix docs)代替wx.CallLater
,而不是wx.CallAfter
,但可以指定延迟。通过在内部for循环结束时调用它来绘制线部分绘制事件不应该堆积起来。
答案 1 :(得分:0)
您可能想要绘制一系列线条。这可能是最简单的。我可能会使用wx.Timer。它运行在它自己的主循环中。您可以将计时器设置为每隔一段时间进行一次,例如每0.5秒进行一次。当它触发时,它可以调用你的draw方法,它将绘制下一行。你可以在这里阅读更多关于计时器的信息: