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 open读写文件实现脚本
Sep 06 Python
python使用cookie库操保存cookie详解
Mar 03 Python
Python的ORM框架SQLAlchemy入门教程
Apr 28 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
python中virtualenvwrapper安装与使用
May 20 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
python django生成迁移文件的实例
Aug 31 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
Python文件操作方法详解
Feb 09 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
Mar 12 Python
keras实现VGG16方式(预测一张图片)
Jul 07 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
需要注意的几个PHP漏洞小结
2012/02/05 PHP
php中大括号作用介绍
2012/03/22 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
yii添删改查实例
2015/11/16 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
php支付宝APP支付功能
2020/07/29 PHP
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
python协程用法实例分析
2015/06/04 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
深入理解Python异常处理的哲学
2019/02/01 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
自荐信的五个重要部分
2013/10/29 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
学校运动会广播稿
2014/10/11 职场文书
超市食品安全承诺书
2015/04/29 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js