Tkinter Canvas 设计球往下移动

Tkinter Canvas 设计球往下移动

定义画布窗口名称为Bouncing Ball,同时定义画布宽度与高度分别为640像素,480像素。这个球将往下移动然后消失,移到超出画布范围就消失了。

from tkinter import * 
from random import * 
import time 

class Ball:#class Ball():#这样写是一样的
    def __init__(self,canvas,color,winW,winH):
        self.canvas = canvas
        self.id = canvas.create_oval(0, 0, 20, 20, fill=color) # 建立球对象
        self.canvas.move(self.id,winW/2,winH/2)   # 设置球最初位置
    def ballMove(self):
        self.canvas.move(self.id, 0, step)        # step是正值表示往下移动

winW = 640      # 定义画布宽度
winH = 480      # 定义画布高度
step = 3        # 定义速度可想成位移步长
speed = 0.03    # 设置移动速度

tk = Tk()
tk.title("Bouncing Ball - apidemos")                    # 游戏窗口标题
tk.wm_attributes('-topmost',1)               # 确保游戏窗口在屏幕最上层
canvas = Canvas(tk,width=winW, height=winH)  # 建立画布
canvas.pack()
tk.update()   

ball = Ball(canvas,'yellow',winW,winH)  # 定义球对象

while True:
    ball.ballMove()
    tk.update()
    time.sleep(speed)   # 可以控制移动速度

# tk.mainloop()

输出:

Tkinter Canvas 设计球往下移动

这个程序由于是一个无限循环(28~31行),所以我们在强制关闭画布窗口时,将在Python Shell窗口看到错误消息,本章最后的实例会改进程序。整个程序可以用球每次移动的步长(16行)和循环第31行time.sleep(speed)指令的speed值,控制球的移动速度。

上述程序中建立了Ball类别,这个类别在__init__()方法中,在第9行创建了球对象,第10行先设置球是大约在中间位置。另外,创建了ballMove( )方法,这个方法会依step变量移动,在此例中是每次往下移动。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程