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实现自动登录人人网并访问最近来访者实例
Sep 26 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
详解基于django实现的webssh简单例子
Jul 17 Python
django 外键model的互相读取方法
Dec 15 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
Django 全局的static和templates的使用详解
Jul 19 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
python matplotlib实现将图例放在图外
Apr 17 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
Django中使用Json返回数据的实现方法
Jun 03 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
PHP4中实现动态代理
2006/10/09 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
php数组删除元素示例
2014/03/21 PHP
3种php生成唯一id的方法
2015/11/23 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
javascript中的window.location.search方法简介
2013/09/02 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
python实现class对象转换成json/字典的方法
2016/03/11 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
python3实现名片管理系统
2020/11/29 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
Python列表解析操作实例总结
2020/02/26 Python
python 穷举指定长度的密码例子
2020/04/02 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
主治医师岗位职责
2013/12/10 职场文书
小班幼儿评语大全
2014/04/30 职场文书
投标服务承诺书
2014/05/28 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
简历自我评价模板
2015/03/11 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书