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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
Python中list初始化方法示例
Sep 18 Python
Python实现Linux中的du命令
Jun 12 Python
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
python 平衡二叉树实现代码示例
Jul 07 Python
使用python3构建文件传输的方法
Feb 13 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
Python如何在bool函数中取值
Sep 21 Python
Python 中random 库的详细使用
Jun 03 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的中问验证码
2006/11/25 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
js 数据类型转换总结笔记
2011/01/17 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
python实现高斯投影正反算方式
2020/01/17 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
大学生护理专业自荐信
2013/10/03 职场文书
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
记账会计岗位职责
2014/06/16 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
公司离职证明标准范本
2014/10/05 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
python游戏开发Pygame框架
2022/04/22 Python