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 相关文章推荐
django接入新浪微博OAuth的方法
Jun 29 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
Python打印“菱形”星号代码方法
Feb 05 Python
python实现猜数字小游戏
Mar 24 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
Python占用的内存优化教程
Jul 28 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
python实现超级玛丽游戏
Mar 18 Python
python实现FTP循环上传文件
Mar 20 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 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
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
php include类文件超时问题处理
2015/02/06 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
Python常用模块介绍
2014/11/21 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
详解python之简单主机批量管理工具
2017/01/27 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
实习单位推荐信范文
2013/11/27 职场文书
关于抽烟的检讨书
2014/02/25 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
家长会开场白和结束语
2015/05/29 职场文书
光荣之路观后感
2015/06/12 职场文书
开学第一周值周总结
2015/07/16 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
深入理解 Golang 的字符串
2022/05/04 Golang