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中列表(list)操作方法汇总
Aug 18 Python
Python的Django框架中从url中捕捉文本的方法
Jul 20 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 Python
python使用pygame框架实现推箱子游戏
Nov 20 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
Python如何获取文件指定行的内容
May 27 Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 Python
python redis存入字典序列化存储教程
Jul 16 Python
python switch 实现多分支选择功能
Dec 21 Python
Python用requests库爬取返回为空的解决办法
Feb 21 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 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中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
分享php多功能图片处理类
2016/05/15 PHP
表单JS弹出填写提示效果代码
2011/04/16 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
JS实现复制功能
2017/03/01 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
Python中的面向接口编程示例详解
2021/01/17 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
编辑个人求职信范文
2013/09/21 职场文书
外贸公司实习自我鉴定
2013/09/24 职场文书
中学生自我鉴定
2014/02/04 职场文书
工作岗位职责范本
2015/02/15 职场文书
看上去很美观后感
2015/06/10 职场文书
黑白记忆观后感
2015/06/18 职场文书
宾馆卫生管理制度
2015/08/06 职场文书