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脚本使得web页面上的代码高亮显示
Apr 24 Python
Python的Django框架中forms表单类的使用方法详解
Jun 21 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
详解Python中最难理解的点-装饰器
Apr 03 Python
Python封装成可带参数的EXE安装包实例
Aug 24 Python
flask框架url与重定向操作实例详解
Jan 25 Python
Python切割图片成九宫格的示例代码
Mar 10 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
用Python提取PDF表格的方法
Apr 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 addslashes和mysql_real_escape_string
2010/01/24 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
python使用socket远程连接错误处理方法
2015/04/29 Python
python读写二进制文件的方法
2015/05/09 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
如何清空Session
2015/02/23 面试题
商铺门前三包责任书
2014/07/25 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
小学安全工作总结2015
2015/05/18 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
Go 自定义package包设置与导入操作
2021/05/06 Golang