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中属性和描述符的正确使用
Aug 23 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
关于tf.reverse_sequence()简述
Jan 20 Python
Python实现播放和录制声音的功能
Aug 12 Python
Python编写memcached启动脚本代码实例
Aug 14 Python
聊聊python中的异常嵌套
Sep 01 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
php学习之简单计算器实现代码
2011/06/09 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
jQuery 工具函数学习资料
2010/04/29 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
python ansible服务及剧本编写
2017/12/29 Python
分析Python中解析构建数据知识
2018/01/20 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
h5封装下拉刷新
2020/08/25 HTML / CSS
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
经理秘书岗位职责
2013/11/14 职场文书
土木工程专业个人求职信
2013/12/30 职场文书
入党思想汇报
2014/01/05 职场文书
初二物理教学反思
2014/01/29 职场文书
《小池塘》教学反思
2014/02/28 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
机关保密工作承诺书
2015/05/04 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL