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中字符编码简介、方法及使用建议
Jan 08 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
python3爬虫中多线程的优势总结
Nov 24 Python
pycharm实现猜数游戏
Dec 07 Python
用python发送微信消息
Dec 21 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
python APScheduler执行定时任务介绍
Apr 19 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
use jscript List Installed Software
2007/06/11 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python松散正则表达式用法分析
2016/04/29 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
python 阶乘累加和的实例
2019/02/01 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
python能在浏览器能运行吗
2020/06/17 Python
Python txt文件如何转换成字典
2020/11/03 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
物业公司采购员岗位职责
2013/12/31 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
廉政承诺书范文
2015/04/28 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python