gpt4 book ai didi

python 3 tkinter : how to add . after() 到图形

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:46 26 4
gpt4 key购买 nike

我正在尝试制作一个慢慢变大的圆圈,为此我需要添加延迟。我尝试使用 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() 需要毫秒延迟以及在该延迟之后运行的函数。您想要做的是在延迟之后运行一个参数为 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 。

关于python 3 tkinter : how to add . after() 到图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45386391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com