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 20 Python
python开启多个子进程并行运行的方法
Apr 18 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
Python中import机制详解
Nov 14 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
Django 使用logging打印日志的实例
Apr 28 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
Jun 20 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
python 多线程中join()的作用
Oct 29 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 Python
python实现马丁策略的实例详解
Jan 15 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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字符串的连接的简单实例
2013/12/30 PHP
php内存缓存实现方法
2015/01/24 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
php封装的page分页类完整实例
2016/10/18 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
详解vue配置后台接口方式
2019/03/29 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Python实现DDos攻击实例详解
2019/02/02 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
python异常处理和日志处理方式
2019/12/24 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
档案检查欢迎词
2014/01/13 职场文书
给实习单位的感谢信
2014/02/01 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
诉讼和解协议书
2016/03/23 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python