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 numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
python有序查找算法 二分法实例解析
Feb 18 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
Python如何脚本过滤文件中的注释
May 27 Python
python3读取autocad图形文件.py实例
Jun 05 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
python如何变换环境
Jul 21 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
php实现简单加入购物车功能
2017/03/07 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
2010/03/01 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
PyTorch中的C++扩展实现
2020/04/02 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
区域销售经理职责
2013/12/22 职场文书
农村婚礼证婚词
2014/01/08 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
中青班党性分析材料
2014/02/16 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
六五普法学习心得体会
2016/01/21 职场文书
初中数学课堂教学反思
2016/02/17 职场文书