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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
Python中为什么要用self探讨
Apr 14 Python
Python实现队列的方法
May 26 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
python爬取淘宝商品详情页数据
Feb 23 Python
python 进程的几种创建方式详解
Aug 29 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 Python
Python类如何定义私有变量
Feb 03 Python
Python中os模块功能与用法详解
Feb 26 Python
Python中flatten( ),matrix.A用法说明
Jul 05 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 array的学习笔记
2012/05/16 PHP
php中explode与split的区别介绍
2012/10/03 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
javascript cookies操作集合
2010/04/12 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
python在不同层级目录import模块的方法
2016/01/31 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
python实现静态服务器
2019/09/05 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
电子商务自荐书范文
2014/01/04 职场文书
领导调研接待方案
2014/02/27 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
一帮一活动总结
2014/05/08 职场文书
企业委托书范本
2014/09/13 职场文书
医生见习报告范文
2014/11/03 职场文书
特岗教师个人总结
2015/02/10 职场文书
实习证明模板
2015/06/16 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js