python GUI实现小球满屏乱跑效果


Posted in Python onMay 09, 2019

本文实例为大家分享了python GUI实现小球满屏乱跑效果的具体代码,供大家参考,具体内容如下

学习tkinter有一段时间了,综合运用一下,做一个类似屏保类的东西,碰到屏幕边缘就反弹回来的那种。

初级篇:上下单向移动

from tkinter import *
import random
import time
#
#创建一个类,这个类含有两个参数,一个是画布,一个是球的颜色
#
class Ball:
 def __init__(self,canvas,color):
 self.canvas = canvas
 self.id = canvas.create_oval(10,10,25,25,fill=color)
 self.canvas.move(self.id,245,100)
 #来回反弹
 self.x = 0
 self.y = -1
 #winfo_height()函数来获取画布当前的高度,赋值给对象变量
 self.canvas_height = self.canvas.winfo_height()
 def draw(self):
 self.canvas.move(self.id,self.x,self.y)
 #获取某个对象在画布的坐标,返回一个数组(两个坐标,左上角的坐标和右下角的两个坐标)
 pos = self.canvas.coords(self.id)
 #打印获取的坐标
 print(pos)
 #如果最上面的纵轴坐标在顶上,则往下移动一个像素
 if pos[1] <= 0:
 self.y = 1
 #如果最下面的纵轴坐标在底上,则向上移动
 if pos[3] > self.canvas_height:
 self.y = -1


#创建画布
tk = Tk()
tk.title("Game_ball")
tk.resizable(0,0)
tk.wm_attributes("-topmost",1)
#bd=0,highlightthickness=0 画布之外没有边框
canvas = Canvas(tk,width=500,height=400,bd=0,highlightthickness=0)
canvas.pack()
tk.update()

#创建对象 
ball = Ball(canvas,'red')

#一直保持循环
while 1:
 ball.draw()
 #快速刷新屏幕
 tk.update_idletasks()
 tk.update()
 time.sleep(0.01)

这个移动的效果是上下移动的。

python GUI实现小球满屏乱跑效果

python GUI实现小球满屏乱跑效果

进阶篇:随机移动

#########################
#上面的例子小球只能上下移动,这次改变下规则,使之能自由运动,满屏乱动,用random里面的洗牌函数
######################
from tkinter import *
import random
import time
#
#创建一个类,这个类含有两个参数,一个是画布,一个是球的颜色
#
class Ball:
 def __init__(self,canvas,color):
 self.canvas = canvas
 self.id = canvas.create_oval(10,10,25,25,fill=color)
 self.canvas.move(self.id,245,100)
 #来回反弹
 #--self.x = 0
 #--self.y = -1
 starts = [-3,-2,-1,1,2,3]
 random.shuffle(starts)
 self.x = starts[0]
 self.y = -3
 #winfo_height()函数来获取画布当前的高度,赋值给对象变量
 self.canvas_height = self.canvas.winfo_height()
 #获取X轴坐标
 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)
 #打印获取的坐标
 print(pos)
 #如果最上面的纵轴坐标在顶上,则往下移动一个像素
 if pos[1] <= 0:
 self.y = 1
 #如果最下面的纵轴坐标在底上,则向上移动
 if pos[3] > self.canvas_height:
 self.y = -1
 #宽度控制#
 #如果在左边框了,那么向右边移动3像素
 if pos[0] <= 0:
 self.x = 3
 #如果到右边框了,左移动3像素
 if pos[2] > self.canvas_width:
 self.x = -3


#创建画布
tk = Tk()
tk.title("Game_ball")
tk.resizable(0,0)
tk.wm_attributes("-topmost",1)
#bd=0,highlightthickness=0 画布之外没有边框
canvas = Canvas(tk,width=500,height=400,bd=0,highlightthickness=0)
canvas.pack()
tk.update()

#创建对象 
ball = Ball(canvas,'red')

#一直保持循环
while 1:
 ball.draw()
 #快速刷新屏幕
 tk.update_idletasks()
 tk.update()
 time.sleep(0.01)

这个就达到了小球满屏乱跑的效果。

python GUI实现小球满屏乱跑效果

python GUI实现小球满屏乱跑效果

python GUI实现小球满屏乱跑效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
python使用装饰器作日志处理的方法
Jul 11 Python
在Python中获取操作系统的进程信息
Aug 27 Python
python脚本之一键移动自定格式文件方法实例
Sep 02 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
通过Python实现一个简单的html页面
May 16 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
Python必备技巧之字符数据操作详解
Mar 23 Python
深入浅析python 协程与go协程的区别
May 09 #Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 #Python
python3.6使用tkinter实现弹跳小球游戏
May 09 #Python
使用GitHub和Python实现持续部署的方法
May 09 #Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 #Python
Python Excel处理库openpyxl使用详解
May 09 #Python
python3实现小球转动抽奖小游戏
Apr 15 #Python
You might like
PHP环境搭建最新方法
2006/09/05 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
浅析python中的分片与截断序列
2016/08/09 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
python画环形图的方法
2020/03/25 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
自立自强的名人事例
2014/02/10 职场文书
环境建设实施方案
2014/03/14 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
民间个人借款协议书
2014/09/30 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
工地食品安全责任书
2015/05/09 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
工作证明格式范文
2015/06/15 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
员工试用期工作总结
2019/06/20 职场文书