Python tkinter实现的图片移动碰撞动画效果【附源码下载】


Posted in Python onJanuary 04, 2018

本文实例讲述了Python tkinter实现的图片移动碰撞动画效果。分享给大家供大家参考,具体如下:

先来看看运行效果:

Python tkinter实现的图片移动碰撞动画效果【附源码下载】

具体代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
try:
 from tkinter import *
except ImportError: #Python 2.x
 PythonVersion = 2
 from Tkinter import *
 from tkFont import Font
 from ttk import *
 from tkMessageBox import *
 import tkFileDialog
else: #Python 3.x
 PythonVersion = 3
 from tkinter.font import Font
 from tkinter.ttk import *
 from tkinter.messagebox import *
# 配置
# 要打开的图像
image1 = "open.gif"
# 初始坐标
x0 = 50.0
y0 = 50.0
# 列表将包含所有的x和y坐标.到目前为止,他们只包含初始坐标
x = [x0]
y = [y0]
# 每次移动的速度或距离
vx = 1.0# x 速度
vy = 0.5# y 速度
# 边界,这里要考虑到图片的大小,要预留一半的长和宽
x_min = 46.0
y_min = 46.0
x_max = 754.0
y_max = 554.0
# 图片间隔时间,要动画效果,此处设为每秒40帧
sleep_time = 0.025
# 运行步数
range_min = 1
range_max = 2000
# 创建500次的x和y坐标
for t in range(range_min, range_max):
 # 新坐标等于旧坐标加每次移动的距离
 new_x = x[t - 1] + vx
 new_y = y[t - 1] + vy
 # 如果已经越过边界,反转方向
 if new_x >= x_max or new_x <= x_min:
  vx = vx * -1.0
 if new_y >= y_max or new_y <= y_min:
  vy = vy * -1.0
 # 添加新的值到列表
 x.append(new_x)
 y.append(new_y)
# 开始使用tk绘图
root = Tk()
root.title("三水点靠木 tkinter动画测试") #在这里修改窗口的标题
canvas = Canvas(width=800, height=600, bg='white')
canvas.pack()
photo1 = PhotoImage(file=image1)
width1 = photo1.width()
height1 = photo1.height()
image_x = (width1) / 2.0
image_y = (height1) / 2.0
# 每次的移动
for t in range(range_min, range_max):
 canvas.create_image(x[t], y[t], image=photo1, tag="pic")
 canvas.update()
 # 暂停0.05妙,然后删除图像
 time.sleep(sleep_time)
 canvas.delete("pic")
root.mainloop()

附:完整实例代码点击此处本站下载

注:tkinter只能识别gif格式图片,将jpg或png格式图片后缀名简单改成gif是不能识别的!

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python使用分治法实现求解最大值的方法
May 12 Python
详解Python中break语句的用法
May 14 Python
python计算圆周率pi的方法
Jul 11 Python
Python如何判断数独是否合法
Sep 08 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
Python内建模块struct实例详解
Feb 02 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
pyCharm 实现关闭代码检查
Jun 09 Python
pytorch中的numel函数用法说明
May 13 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 Python
Python给你的头像加上圣诞帽
Jan 04 #Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 #Python
Python语言描述随机梯度下降法
Jan 04 #Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 #Python
python使用xpath中遇到:到底是什么?
Jan 04 #Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 #Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 #Python
You might like
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
php实现学生管理系统
2020/03/21 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
js常用代码段收集
2011/10/28 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
详解React中setState回调函数
2018/06/14 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
Python中除法使用的注意事项
2014/08/21 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
python方向键控制上下左右代码
2018/01/20 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python支持多线程的爬虫实例
2019/12/21 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python实现石头剪刀布游戏
2021/01/20 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
解决方案设计综合面试题
2015/08/31 面试题
测试工程师岗位职责
2013/11/28 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis