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 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
Python实现屏幕截图的代码及函数详解
Oct 01 Python
python技能之数据导出excel的实例代码
Aug 11 Python
python实现壁纸批量下载代码实例
Jan 25 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
Python 如何在字符串中插入变量
Aug 01 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
Django静态文件加载失败解决方案
Aug 26 Python
Python list和str互转的实现示例
Nov 16 Python
Python音乐爬虫完美绕过反爬
Aug 30 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删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
php浏览历史记录的方法
2015/03/10 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
给Function做的OOP扩展
2009/05/07 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python contextlib模块使用示例
2015/02/18 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
上海期货面试题
2014/01/31 面试题
早读迟到检讨书
2014/01/24 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
结婚幸福感言
2015/08/01 职场文书
导游词之岳阳楼
2019/09/25 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
python实现MD5进行文件去重的示例代码
2021/07/09 Python