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求列表交集的方法汇总
Nov 10 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
Python装饰器原理与用法分析
Apr 30 Python
详解flask入门模板引擎
Jul 18 Python
用python实现k近邻算法的示例代码
Sep 06 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
Apr 05 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
Python中函数的返回值示例浅析
Aug 28 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
解决python3输入的坑——input()
Dec 05 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 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将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
php异常处理捕获错误整理
2019/09/23 PHP
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
JS实现侧悬浮浮动实例代码
2013/11/29 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
python使用mysql数据库示例代码
2017/05/21 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
初中班主任评语大全
2014/04/24 职场文书
实习评语大全
2014/04/26 职场文书
2014中考励志标语
2014/06/05 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
先进教师个人总结
2015/02/11 职场文书
校园开放日新闻稿
2015/07/17 职场文书
活动宣传稿范文
2015/07/23 职场文书
应届毕业生的自我评价
2019/06/21 职场文书