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写的创建文件夹自定义函数mkdir()
Aug 25 Python
Python中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
利用Python演示数型数据结构的教程
Apr 03 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
pytorch之inception_v3的实现案例
Jan 06 Python
Python代码中如何读取键盘录入的值
May 27 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
Python实现简单得递归下降Parser
May 02 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使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
JS与C#编码解码
2013/12/03 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
python3简单实现微信爬虫
2015/04/09 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
Python中的引用知识点总结
2019/05/20 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
QML使用Python的函数过程解析
2019/09/26 Python
Python字典底层实现原理详解
2019/12/18 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
中海讯通笔试题
2015/09/15 面试题
小学三八妇女节活动方案
2014/03/16 职场文书
《海底世界》教学反思
2014/04/16 职场文书
伊琍体标语
2014/06/25 职场文书
普通党员整改措施
2014/10/24 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
中秋节随笔
2015/08/15 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android