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通过邮件服务器端口发送邮件的方法
Apr 30 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
Python IDLE入门简介
Dec 08 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
python线程池如何使用
May 28 Python
python实现图像高斯金字塔的示例代码
Dec 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
php 生成饼图 三维饼图
2009/09/28 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python 从相对路径下import的方法
2018/12/04 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
详解Python中的文件操作
2021/01/14 Python
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
采购人员的个人自我评价
2014/01/16 职场文书
研究生毕业鉴定
2014/01/29 职场文书
研究生求职自荐书
2014/06/23 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
培训班开班主持词
2015/07/02 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL