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遍历类中所有成员的方法
Mar 18 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
Python中用sleep()方法操作时间的教程
May 22 Python
python简单实现刷新智联简历
Mar 30 Python
使用Python对Csv文件操作实例代码
May 12 Python
python实现AES加密与解密
Mar 28 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
Python类如何定义私有变量
Feb 03 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
如何让python的运行速度得到提升
Jul 08 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 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下使用SMTP发邮件的代码
2008/01/10 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
javascript 必知必会之closure
2009/09/21 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
Vuex提升学习篇
2018/01/11 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
机器学习10大经典算法详解
2017/12/07 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
如何利用Python识别图片中的文字
2020/05/31 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
python自动化发送邮件实例讲解
2021/01/04 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
汽车运用工程毕业生自荐信
2013/10/29 职场文书
教师学期个人总结
2015/02/11 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
入党申请书格式
2019/06/20 职场文书
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers