python弹跳小球(python GUI实现小球满屏乱跑效果)
类别:脚本大全 浏览量:558
时间:2021-10-03 01:10:14 python弹跳小球
python GUI实现小球满屏乱跑效果本文实例为大家分享了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 ) |
这个移动的效果是上下移动的。
进阶篇:随机移动
|
######################### #上面的例子小球只能上下移动,这次改变下规则,使之能自由运动,满屏乱动,用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 ) |
这个就达到了小球满屏乱跑的效果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/x6_9x/article/details/50809296
您可能感兴趣
- python将网站图片本地存储(详解Python下载图片并保存本地的两种方式)
- python列表的循环遍历使用教程(Python中使用遍历在列表中添加字典遇到的坑)
- linux下python安装pip(在Docker中的ubuntu中安装Python3和Pip的问题)
- python处理水印(Yii 使用intervention/image拓展实现图像处理功能)
- pythonmatplotlib散点图怎么画(python使用matplotlib画柱状图、散点图)
- python转图片为字符图(Python实现图片转字符画的代码实例)
- python爬虫书籍经典(Python利用lxml模块爬取豆瓣读书排行榜的方法与分析)
- python 组合数据类型(详解Python3 对象组合zip和回退方式*zip)
- python中的time时间模块使用知识(python实现简单日期工具类)
- python最基本的编程工具(5款Python程序员高频使用开发工具推荐)
- python的log函数(Python3 log10函数简单用法)
- python如何获取列表值(Python中按键来获取指定的值)
- 怎么对python中列表进行排序(Python列表常见操作详解获取,增加,删除,修改,排序等)
- python 提取微信消息(python实现文件助手中查看微信撤回消息)
- python中numpy常用函数(使用Python的SymPy库解决数学运算问题的方法)
- python装饰器使用说明(详解Python装饰器)
- 《傲骨之战》剧终 律政女魔头Diane,为什么是大女主天花板(傲骨之战剧终律政女魔头Diane)
- 汉族(汉族的祖先是谁)
- 中国有几个名族(中国有几个民族没列入56个民族)
- 数学语文题目(语文的数学题)
- 香蕉(香蕉三种人不宜吃)
- 没钱可以快乐吗(没钱也能快乐吗)
热门推荐
- vue图片切换软件(Vue实现简单图片切换效果)
- 面试问vue掌握程度如何回答(面试最常问的13种Vue修饰符)
- dedecms搜索功能怎么设置详细(DEDECMS短标题标签调用与字数修改的方法)
- 网页嵌入百度UEditor富文本编辑器
- 微信小程序ui聊天窗口(微信小程序实现简单聊天室)
- C#中的反射
- tomcat处理乱码(Tomcat中catalina.bat设置为UTF-8控制台出现乱码)
- ftp服务器包括哪些(FTP服务器和Web服务器知多少)
- docker和jenkins自动化(Docker使用Git实现Jenkins发布、测试项目的详细流程)
- dedecms怎么使用(DEDECMS网站系统目录权限设置教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9