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实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
python实现TCP服务器端与客户端的方法详解
Apr 30 Python
python3.5使用tkinter制作记事本
Jun 20 Python
Python 中 list 的各项操作技巧
Apr 13 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
详解Python自建logging模块
Jan 29 Python
对python中的pop函数和append函数详解
May 04 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
Python根据服务获取端口号的方法
Sep 25 Python
Python unittest生成测试报告过程解析
Sep 08 Python
安装不同版本的tensorflow与models方法实现
Feb 20 Python
Python绘制分类图的方法
Apr 20 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
php.ini 中文版
2006/10/28 PHP
php 方便水印和缩略图的图形类
2009/05/21 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
php阳历转农历优化版
2016/08/08 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
用python解压分析jar包实例
2020/01/16 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
电气专业应届生求职信
2013/11/01 职场文书
毕业生自荐书
2014/02/03 职场文书
绩效管理实施方案
2014/03/19 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers