首页 > 编程 > Python > 正文

Python3实现的画图及加载图片动画效果示例

2020-01-04 16:10:31
字体:
来源:转载
供稿:网友

本文实例讲述了Python3实现的画图及加载图片动画效果。分享给大家供大家参考,具体如下:

#__*__coding:utf-8__*__#python3import timefrom 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的事物,填充为bluetk=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) #显示图片和三角形的IDcanvas.bind_all('<KeyPress-Up>',moveImage)#绑定方向键 upcanvas.bind_all('<KeyPress-Down>',moveImage)canvas.bind_all('<KeyPress-Left>',moveImage)canvas.bind_all('<KeyPress-Right>',moveImage)#canvas.bind_all('<KeyPress-Up>',changeColor)

运行结果:

摁上下左右键后可以移动图片

挡板游戏例子

#__*__coding:utf-8__*__#python3from tkinter import *import randomimport timeclass 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=-3class 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=20tk=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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表