按顺序更新tkinter画布

时间:2017-11-23 16:40:35

标签: python canvas tkinter

按下按钮后激活以下呼叫。

def ON():
  print("System Initiated")
  var.set("System Initiated")
  AC1 = circuitD.create_oval(375,155,400,180, fill= 'green')
  DCM = circuitD.create_oval(375,425,400,450, fill= 'green')
  DC2 = circuitD.create_oval(367,513,392,538, fill= 'green')
  DC1 = circuitD.create_oval(313,513,338,538, fill= 'green')
  DC3 = circuitD.create_oval(423,513,448,538, fill= 'green')
  DC4 = circuitD.create_oval(477,513,502,538, fill= 'green')

它只是在画布的不同区域绘制了6个绿色圆圈。 我想按顺序绘制它们,延迟一秒钟。我尝试在每一行之间使用time.sleep(seconds)代码段。

def ON():
  print("System Initiated")
  var.set("System Initiated")
  AC1 = circuitD.create_oval(375,155,400,180, fill= 'green')
  time.sleep(seconds)
  DCM = circuitD.create_oval(375,425,400,450, fill= 'green')
  time.sleep(seconds)
  DC2 = circuitD.create_oval(367,513,392,538, fill= 'green')
  time.sleep(seconds)
  DC1 = circuitD.create_oval(313,513,338,538, fill= 'green')
  time.sleep(seconds)
  DC3 = circuitD.create_oval(423,513,448,538, fill= 'green')
  time.sleep(seconds)
  DC4 = circuitD.create_oval(477,513,502,538, fill= 'green')

睡眠功能将整个绘图序列延迟设定的时间量,然后一次绘制所有6个圆圈。似乎睡眠功能只能正确延迟shell输出。

我的问题是,有没有办法阻止圈子出现在画布上?或者有没有办法在每个time.sleep(seconds)之后实时更新画布?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您不介意整个程序在序列中锁定,那么您可以在睡眠后添加circuitD.update()

否则,您将不得不使用after调用,但这会妨碍您保持对创建对象的引用。你在使用这些参考资料的是什么?

如果您提供Minimal, Complete, and Verifiable example,我可以展示一个示例。