使用tkinter canvas控件生成一个要求,并在画布上反复随机滚动,并交替更换颜色
from tkinter import *
import time
from random import randint, seed
class Ball():
def __init__(self, canvas, x1, y1, x2, y2, max_x,max_y):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.max_x = max_x
self.max_y = max_y
self.center_x =0
self.center_y=0
self.canvas = canvas
self.ball_color = 1
#(x1,y1)和(x2,y2)分别对应圆的左上角和右下角坐标,也就是定义了圆的大小
self.ball = canvas.create_oval(self.x1, self.y1, self.x2, self.y2, fill="blue")
def move_ball(self):
deltax = randint(0,10)
deltay = randint(0,15)
self.center_x += deltax
self.center_y += deltay
if self.center_x > self.max_x or self.center_y > self.max_y:
print('ball disapear')
canvas.delete(self.ball)
if self.ball_color == 1:
self.ball = canvas.create_oval(self.x1, self.y1, self.x2, self.y2, fill="red")
self.ball_color = 2
else:
self.ball = canvas.create_oval(self.x1, self.y1, self.x2, self.y2, fill="blue")
self.ball_color=1
self.center_x =0
self.center_y=0
else:
self.canvas.move(self.ball, deltax, deltay)
self.canvas.after(200, self.move_ball)#定期自动更新
#
root = Tk()
root.title("Loop Balls")
root.resizable(False,False)
canvas = Canvas(root, width = 300, height = 300)
canvas.pack()
#
seed(time.time())
ball = Ball(canvas, 0, 0, 20, 20,300,300) #创建ball实体
ball.move_ball() #开始移动球
root.mainloop()