如何使用Zelle图形模块制作动画?

2024-06-25 22:59:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助来设计我的图形,没有turtle也没有tkinter,但是有Zelle graphics.py。问题是我需要同时运行4个循环。以下是我目前掌握的代码:

from graphics import *
import time #import time module
from random import randrange

def rand_color():#generates a random color and returns that color
    return(color_rgb(randrange(256),randrange(256),randrange(256)))

def main():
    win = GraphWin("My Circle",500,500)
    c = Circle(Point(20,20),20)
    c.setFill(rand_color())
    c.draw(win)
    for i in range(1,461):
        c.move(1,1)
        time.sleep(.005)
        
    c = Circle(Point(20,20),20)
    c.setFill(rand_color())
    c.draw(win)
    for i in range(1,461):
        c.move(-1,1)
        time.sleep(.005)
        
    c = Circle(Point(20,20),20)
    c.setFill(rand_color())
    c.draw(win)
    for i in range(1,461):
        c.move(1,-1)
        time.sleep(.005)
        
    c = Circle(Point(20,20),20)
    c.setFill(rand_color())
    c.draw(win)
    for i in range(1,461):
        c.move(1,1)
        time.sleep(.005)
main()

我不知道如何一次移动多个对象。这件事怎么办


Tags: inimportformovetimerangesleepwin
1条回答
网友
1楼 · 发布于 2024-06-25 22:59:16

相反,完全轮流移动每个圆圈,切碎这些动作并交替进行,这样每个圆圈在循环中一次移动一点。我猜这和你想做的很接近:

from random import randrange
from graphics import *

def rand_color():
    """ Generate a random color and return it. """

    return color_rgb(randrange(256), randrange(256), randrange(256))

win = GraphWin("My Circle", 500, 500)

circles = []

for x in [-1, 1]:
    for y in [-1, 1]:
        circle = Circle(Point(250, 250), 20)
        circle.setFill(rand_color())
        circle.draw(win)
        circles.append((circle, (x, y)))

for _ in range(250):
    for circle, (x, y) in circles:
        circle.move(x, y)

win.getMouse()  # Pause to view result
win.close()  # Close window when done

enter image description here

相关问题 更多 >