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设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
KMP算法精解及其Python版的代码示例
Jun 01 Python
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
详解 Python 读写XML文件的实例
Aug 02 Python
深入理解Python3 内置函数大全
Nov 23 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
Python实现AI自动抠图实例解析
Mar 05 Python
Python OrderedDict字典排序方法详解
May 21 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
Python实现SMTP邮件发送
Jun 16 Python
keras用auc做metrics以及早停实例
Jul 02 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 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中文本操作的类
2007/03/17 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
linux下php上传文件注意事项
2016/06/11 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
PHP反射实际应用示例
2019/04/03 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
详解Angularjs filter过滤器
2016/02/06 Javascript
详解js的六大数据类型
2016/12/27 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
Python中的闭包总结
2014/09/18 Python
Django返回json数据用法示例
2016/09/18 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
python 实现IP子网计算
2021/02/18 Python
美国家居装饰店:Pier 1
2019/09/04 全球购物
高中毕业生生活的自我评价
2013/12/08 职场文书
工地资料员岗位职责
2013/12/31 职场文书
员工考核评语大全
2014/04/26 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python