【问题标题】:How to use tkinter Canvas to create multiple text one time?如何使用 tkinter Canvas 一次创建多个文本?
【发布时间】:2021-12-31 07:02:07
【问题描述】:

例如:

for i in range(10000):
   canvas.create_text(10*i,100,text='test',fill='red')

运行此部分时主窗口卡住。加载文本时如何避免它?

【问题讨论】:

  • 你可以使用after()来替换for循环。
  • 能否详细说明 after() 的使用方法?非常感谢!
  • 这里有一个关于after() 小部件方法的documentation

标签: python tkinter canvas


【解决方案1】:

您可以使用after() 替换 for 循环,这样它就不会阻塞 tkinter mainloop

def show_text(n=0):
    # show 20 text in each iteration
    for i in range(20):
        y, x = divmod(n+i, 20)
        canvas.create_text(x*50, y*10, text='test', fill='red', anchor='nw')
    n += 20
    if n < 10000:
        canvas.after(1, show_text, n)

show_text() # start the after() loop

【讨论】:

  • 非常感谢,谢谢!
猜你喜欢
  • 2021-05-21
  • 1970-01-01
  • 2021-12-05
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多