【发布时间】:2018-04-07 17:29:03
【问题描述】:
我一直在使用 Tkinter 制作一些简单的动画。
我编写了一个代码,让一个球在屏幕上以随机方向和随机起始位置移动并从画布边缘反弹。
我想对多个球重复此操作,而不必为每个球单独编写代码。我曾尝试使用声明for n in xrange(5),但似乎没有效果。我希望能够创建多个球,所有球都从随机位置开始并沿随机方向移动。
这是我的代码:
from Tkinter import *
import random
import time
shop_window = Tk()
shop_window.overrideredirect(1)
shop_window.geometry("254x310")
canvas = Canvas(shop_window, width=254, height=310, bg="snow2", bd=0, highlightthickness=0, relief="ridge")
canvas.pack()
x = random.randint(0, 254)
y = random.randint(0, 310)
ball = canvas.create_oval((x-10, y-10, x+10, y+10), fill="saddle brown")
xspeed = random.randint(1, 5)
yspeed = random.randint(1, 5)
while True:
canvas.move(ball, xspeed, yspeed)
pos = canvas.coords(ball)
if pos[3] >= 310 or pos[1] <= 0:
yspeed = -yspeed
if pos[2] >= 254 or pos[0] <= 0:
xspeed = -xspeed
Tk.update(shop_window)
time.sleep(0.025)
pass
任何帮助将不胜感激!
【问题讨论】:
-
最佳解决方案涉及面向对象的方法。可以吗,还是要避免使用 OO 方法?
-
@BryanOakley 我对 OO 方法没有任何问题。我之前尝试使用对象来解决问题,但发现它有点棘手,因为我仍处于使用 tkinter 编程的初级阶段。
标签: python animation tkinter canvas tkinter-canvas