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获取网页上图片下载地址的方法
Mar 11 Python
用Python代码来绘制彭罗斯点阵的教程
Apr 03 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Django自定义用户认证示例详解
Mar 14 Python
Tensorflow卷积神经网络实例
May 24 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
python操作kafka实践的示例代码
Jun 19 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
python pyg2plot的原理知识点总结
Feb 28 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命令行用法入门实例教程
2014/10/27 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
python批量修改文件后缀示例代码分享
2013/12/24 Python
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
好的自荐信的要求
2013/10/30 职场文书
应届生污水处理求职信
2013/11/06 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
分公司负责人任命书
2014/06/04 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
实习报告范文
2019/07/30 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
Python实现日志实时监测的示例详解
2022/04/06 Python