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 30 Python
简单使用Python自动生成文章
Dec 25 Python
使用Python脚本来获取Cisco设备信息的示例
May 04 Python
在类Unix系统上开始Python3编程入门
Aug 20 Python
老生常谈Python进阶之装饰器
May 11 Python
Python通过future处理并发问题
Oct 17 Python
Numpy之文件存取的示例代码
Aug 03 Python
对python中dict和json的区别详解
Dec 18 Python
python 弧度与角度互转实例
Apr 15 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
Python改变对象的字符串显示的方法
Aug 01 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 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公用函数列表[正则]
2007/02/22 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php 操作调试的方法
2012/07/12 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
PHP与以太坊交互详解
2018/08/24 PHP
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
js尾调用优化的实现
2019/05/23 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
python 并发下载器实现方法示例
2019/11/22 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
python字符串的index和find的区别详解
2020/06/20 Python
鱼油专家:Omegavia
2016/10/10 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
Java面向对象面试题
2016/12/26 面试题
我的五年职业生涯规划
2014/01/23 职场文书
高三学生评语大全
2014/04/25 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技