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获取豆瓣电影简介代码分享
Jan 16 Python
基python实现多线程网页爬虫
Sep 06 Python
python 计算两个日期相差多少个月实例代码
May 24 Python
python爬取内容存入Excel实例
Feb 20 Python
python的内存管理和垃圾回收机制详解
May 18 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
Python reduce函数作用及实例解析
May 08 Python
Python 如何创建一个线程池
Jul 28 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
Python中生成ndarray实例讲解
Feb 22 Python
Python音乐爬虫完美绕过反爬
Aug 30 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&amp;mysql(六)
2006/10/09 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
Using the TextRange Object
2006/10/14 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
vue项目中导入swiper插件的方法
2018/01/30 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
python迭代器的使用方法实例
2013/11/21 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
linux面试相关问题
2013/04/28 面试题
2016年教师节贺卡寄语
2015/12/04 职场文书
600字作文之感受大自然
2019/11/27 职场文书
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS