tkinter实现动画效果

一 代码

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. import time
  4. from tkinter import*
  5. # 配置
  6. # 要打开的图像
  7. image1 ="open.png"
  8. # 初始坐标
  9. x0 =50.0
  10. y0 =50.0
  11. # 列表将包含所有的x和y坐标.到目前为止,他们只包含初始坐标
  12. x =[x0]
  13. y =[y0]
  14. # 每次移动的速度或距离
  15. vx =1.0# x 速度
  16. vy =0.5# y 速度
  17. # 边界,这里要考虑到图片的大小,要预留一半的长和宽
  18. x_min =46.0
  19. y_min =46.0
  20. x_max =754.0
  21. y_max =554.0
  22. # 图片间隔时间,要动画效果,此处设为每秒40帧
  23. sleep_time =0.025
  24. # 运行步数
  25. range_min =1
  26. range_max =2000
  27. # 创建500次的x和y坐标
  28. for t in range(range_min,range_max):
  29. # 新坐标等于旧坐标加每次移动的距离
  30. new_x = x[t-1]+ vx
  31. new_y = y[t-1]+ vy
  32. # 如果已经越过边界,反转方向
  33. if new_x >= x_max or new_x <= x_min:
  34. vx = vx*-1.0
  35. if new_y >= y_max or new_y <= y_min:
  36. vy = vy*-1.0
  37. # 添加新的值到列表
  38. x.append(new_x)
  39. y.append(new_y)
  40. # 开始使用tk绘图
  41. root =Tk()
  42. canvas =Canvas(width=800, height=600, bg='white')
  43. canvas.pack()
  44. photo1 =PhotoImage(file = image1)
  45. width1 = photo1.width()
  46. height1 = photo1.height()
  47. image_x =(width1)/2.0
  48. image_y =(height1)/2.0
  49. # 每次的移动
  50. for t in range(range_min,range_max):
  51. canvas.create_image(x[t], y[t], image = photo1,tag ="pic")
  52. canvas.update()
  53. # 暂停0.05妙,然后删除图像
  54. time.sleep(sleep_time)
  55. canvas.delete("pic")
  56. root.mainloop()
二 运行结果


 

猜你喜欢

转载自cakin24.iteye.com/blog/2384559
今日推荐