Python3实现的画图及加载图片动画效果示例


Posted in Python onJanuary 19, 2018

本文实例讲述了Python3实现的画图及加载图片动画效果。分享给大家供大家参考,具体如下:

#__*__coding:utf-8__*__
#python3
import time
from tkinter import *
def moveImage(event):#图片logo.gif的移动要绑定的函数
  if event.keysym=='Up':
    canvas.move(1,0,-3)#移动ID为1的事物,使得横坐标加0,纵坐标减3
  elif event.keysym=='Down':
    canvas.move(1,0,+3)
  elif event.keysym=='Left':
    canvas.move(1,-3,0)
  elif event.keysym=='Right':
    canvas.move(1,3,0)
  tk.update()
  time.sleep(0.05)
def changeColor(event):
  if event.keysym=='Up':
    canvas.itemconfig(pg,fill='blue')#填充ID为pg的事物,填充为blue
tk=Tk()#窗口
canvas=Canvas(tk,width=400,height=400)#画布
canvas.pack()#显示出来
myImage=PhotoImage(file='C:\\Users\\lai\\Desktop\\logo.gif')#图片格式必须为gif格式
im=canvas.create_image(0,0,anchor=NW,image=myImage)#加载图片
pg=canvas.create_polygon(10,10,10,60,50,35,fill='red')#创建三角形
print (im);print (pg) #显示图片和三角形的ID
canvas.bind_all('<KeyPress-Up>',moveImage)#绑定方向键 up
canvas.bind_all('<KeyPress-Down>',moveImage)
canvas.bind_all('<KeyPress-Left>',moveImage)
canvas.bind_all('<KeyPress-Right>',moveImage)
#canvas.bind_all('<KeyPress-Up>',changeColor)

运行结果:

Python3实现的画图及加载图片动画效果示例

摁上下左右键后可以移动图片

挡板游戏例子

#__*__coding:utf-8__*__
#python3
from tkinter import *
import random
import time
class Ball:#小球的类
  def __init__(self,canvas,paddle,color):
    self.canvas=canvas#传递画布值
    self.paddle=paddle#把挡板传递进来
    self.id=canvas.create_oval(10,10,25,25,fill=color)#画椭圆并且保存其ID
    self.canvas.move(self.id,245,100)
    start=[-3,-2,-1,1,2,3]
    random.shuffle(start)#随机化列表
    self.x=start[0]
    self.y=-3
    self.canvas_heigh=self.canvas.winfo_height()#获取窗口高度并保存
    self.canvas_width=self.canvas.winfo_width()
  def draw(self):
    self.canvas.move(self.id,self.x,self.y)
    pos=self.canvas.coords(self.id)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标)
    #使得小球不会超出窗口
    pad=self.canvas.coords(self.paddle.id)#获取挡板的坐标
    if pos[1]<=0 :
      self.y=3
    if pos[3]>=self.canvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]<=pad[2]):
      self.y=-3
    if pos[0]<=0:
      self.x=3
    if pos[2]>=self.canvas_width:
      self.x=-3
class Paddle:#挡板的类
  def __init__(self,canvas,color):
    self.canvas=canvas
    self.color=color
    self.id=canvas.create_rectangle(0,0,100,10,fill=color)
    self.canvas.move(self.id,200,300)
    self.canvas_width=self.canvas.winfo_width()
    self.l=0
    self.r=0
  def draw(self):
    pos=self.canvas.coords(self.id)
    if pos[0]<=0:
      self.l=0
    if pos[2]>=self.canvas_width:
      self.r=0
  def turn_left(self,event):
    self.canvas.move(self.id,self.l,0)
    self.l=-20
  def turn_right(self,event):
    self.canvas.move(self.id,self.r,0)
    self.r=20
tk=Tk()
tk.title('Game')
tk.resizable(0,0)#使得窗口大小不可调整
tk.wm_attributes('-topmost',1)#包含画布的窗口放在其他窗口的前面
canvas=Canvas(tk,width=500,height=400,bd=0,highlightthickness=0)#后面两个参数去掉边框
canvas.pack()
tk.update()
paddle=Paddle(canvas,'blue')
ball=Ball(canvas,paddle,'red')
canvas.bind_all('<KeyPress-Left>',paddle.turn_left)#绑定方向键
canvas.bind_all('<KeyPress-Right>',paddle.turn_right)
while 1:
  ball.draw()
  paddle.draw()
  tk.update_idletasks()#快速重画屏幕
  tk.update()
  time.sleep(0.01)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python二叉树的实现实例
Nov 21 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
Python探索之pLSA实现代码
Oct 25 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
详解python中init方法和随机数方法
Mar 13 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
python实现人像动漫化的示例代码
May 17 Python
使用opencv中匹配点对的坐标提取方式
Jun 04 Python
python爬虫要用到的库总结
Jul 28 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
什么是Python包的循环导入
Sep 08 Python
Python实现将doc转化pdf格式文档的方法
Jan 19 #Python
python机器学习理论与实战(四)逻辑回归
Jan 19 #Python
python机器学习理论与实战(二)决策树
Jan 19 #Python
Python三种遍历文件目录的方法实例代码
Jan 19 #Python
python机器学习理论与实战(一)K近邻法
Jan 28 #Python
python机器学习理论与实战(六)支持向量机
Jan 19 #Python
Python logging管理不同级别log打印和存储实例
Jan 19 #Python
You might like
php 删除数组元素
2009/01/16 PHP
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php实现的mongodb操作类
2015/05/28 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
pytorch实现线性拟合方式
2020/01/15 Python
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
前台文员岗位职责
2013/12/28 职场文书
作风建设整改方案
2014/10/27 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
走进毛泽东观后感
2015/06/04 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
Django如何与Ajax交互
2021/04/29 Python
pytorch实现ResNet结构的实例代码
2021/05/17 Python
Python实现单例模式的5种方法
2021/06/15 Python
python中tkinter复选框使用操作
2021/11/11 Python