python 3 tkinter:如何将 .after() 添加到图形
python 3 tkinter: how to add .after() to graphics
我正在尝试制作一个慢慢变大的圆圈,为此我需要添加延迟。我尝试使用 time.sleep()
,但发现它不起作用,我需要使用 .after()
。我试过制作一个制作圆圈的功能,但没有奏效。我试过在创建椭圆之前添加一个 lambda,但这也没有用。无论如何,我可以在新圈子建立之前增加延迟吗?
谢谢
我的代码:-
from tkinter import *
root = Tk()
c = Canvas(root, width = 500, height = 500)
c.pack()
oval = c.create_oval(0, 0, 1, 1)
for x in range(2, 200, 5):
c.delete(oval)
root.after(100, oval = c.create_oval(0, 0, x, x))
root.after()
需要 ms 延迟和函数到 运行 在该延迟之后。你想要做的是在延迟 运行 之后,一个参数为 x
(圆的半径)的函数。这个问题是你不能要求它运行一个有输入的函数。
要解决这个问题,您可以使用更新函数,然后使用全局变量来设置圆的半径等。
这对我有用:
from tkinter import *
root = Tk()
c = Canvas(root, width = 500, height = 500, highlightthickness = 0)
c.pack()
oval = c.create_oval(0, 0, 1, 1)
r = 2
def update():
global r, oval
if x < 200:
x += 5
c.delete(oval)
oval = c.create_oval(0, 0, r, r)
root.after(100, update)
update()
root.mainloop()
我还在您的 canvas 中添加了 highlightthickness = 0 选项,否则坐标系不匹配,您的圆圈将溢出 canvas。
我正在尝试制作一个慢慢变大的圆圈,为此我需要添加延迟。我尝试使用 time.sleep()
,但发现它不起作用,我需要使用 .after()
。我试过制作一个制作圆圈的功能,但没有奏效。我试过在创建椭圆之前添加一个 lambda,但这也没有用。无论如何,我可以在新圈子建立之前增加延迟吗?
谢谢
我的代码:-
from tkinter import *
root = Tk()
c = Canvas(root, width = 500, height = 500)
c.pack()
oval = c.create_oval(0, 0, 1, 1)
for x in range(2, 200, 5):
c.delete(oval)
root.after(100, oval = c.create_oval(0, 0, x, x))
root.after()
需要 ms 延迟和函数到 运行 在该延迟之后。你想要做的是在延迟 运行 之后,一个参数为 x
(圆的半径)的函数。这个问题是你不能要求它运行一个有输入的函数。
要解决这个问题,您可以使用更新函数,然后使用全局变量来设置圆的半径等。
这对我有用:
from tkinter import *
root = Tk()
c = Canvas(root, width = 500, height = 500, highlightthickness = 0)
c.pack()
oval = c.create_oval(0, 0, 1, 1)
r = 2
def update():
global r, oval
if x < 200:
x += 5
c.delete(oval)
oval = c.create_oval(0, 0, r, r)
root.after(100, update)
update()
root.mainloop()
我还在您的 canvas 中添加了 highlightthickness = 0 选项,否则坐标系不匹配,您的圆圈将溢出 canvas。