python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
作者:dhjabc_1 发布时间:2023-04-29 11:00:24
标签:python,tkinter,透明窗体,小球
在上一篇的基础上,继续在透明窗体上绘制小球,
一、画个大球看看
(一)核心代码
在on_resize函数内部增加如下画圆的代码
canvas.create_oval(100, 100, 200, 200,
outline='yellow', # 边框颜色
fill='pink', # 填充颜色
width=4 # 边框宽度
)
运行效果如下:
嘻嘻,是不是觉得有点意思。
好吧,后续我会分享这部分的完整代码给各位,希望大家不是拿来主义,能点点赞、关注一下我啊。
二、让小球随机运动起来
(一)核心函数
def create_ball(canvas,tk):
# tkinter绘图采用屏幕坐标系,原点在左上角,x从左往右递增,y从上往下递增
# 在绘图区域内,随机产生当前球的圆心的x坐标和y坐标,用于制定出现的位置
xpos = randint(10, int(tk.winfo_width()))
ypos = randint(10, int(tk.winfo_height()))
# 随机产生表示当前球的大小,也就是半径长度
radius = randint(40, 70)
# 通过lambda表达式创建函数对象r,每次调用r()都会产生0~255之间的数字
r = lambda: randint(0, 255)
# 三次调用的数字取前两位,用十六进制数方式存储到self.color里,作为球的颜色
# RRGGBB,前2是红色,中2是绿色,后2是蓝色,最小是0,最大是F
# 如全黑#000000 全白#FFFFFF 全红#FF0000
color = "#%02x%02x%02x" % (r(), r(), r())
# canvas.create_oval可以绘制一个圆
# 但是需要传入圆的左、上、右、下四个坐标
# 所以我们先产生4个坐标,通过这个四个坐标,绘制圆的大小
# 左坐标=x坐标-半径
x1 = xpos - radius
# 上坐标=y坐标-半径
y1 = ypos - radius
# 右坐标=x坐标+半径
x2 = xpos + radius
# 下坐标=y坐标+半径
y2 = ypos + radius
# 通过canvas.create_oval()方法绘出整个圆,填充色和轮廓色分别是self.color生成的颜色
canvas.delete('ball')
ball = canvas.create_oval(x1, y1, x2, y2, fill=color, outline=color,tag='ball')
# canvas.addtag_all('t5')
print(x1,y1,x2,y2,color,radius)
canvas.after(1000, create_ball,canvas,tk)
(二)运行效果
随机的小球运动效果就出来了。
三、更多参数的优化
(一)去掉标题栏
tk.overrideredirect(1)
(二)置顶显示
tk.wm_attributes("-topmost", 1)
(三)把旁边的白边去掉
canvas.config(highlightthickness=0)
呵呵,窗体最后就变成光秃秃的了。
也许按需使用会更好!!
(四)运行效果
呵呵,什么都没有了,只剩下随机的小球还在界面上显示。
代码量不大,效果还行。
再深入研究可以有更多更有趣的应用。
来源:https://blog.csdn.net/dhjabc_1/article/details/116797652


猜你喜欢
- 在使用Celery统计每日访问数量的时候,发现一个任务会同时执行两次,发现同一时间内(1s内)竟然同时发送了两次任务,也就是同时产生了两个w
- 不同于物理学中的「短路」(Short circuit)那般危险,Python中的短路机制非常有用,跟很多其他编程语言中的短路机制作用类似,一
- 功能描述数据库间数据同步方式很多,在上篇博文中有总结。本文是用py程序实现数据同步。A数据库中有几十张表,要汇聚到B数据库中,且表结构一致,
- 随着同时开发的项目越来越多,需要不停的在各个不同版本的 python 环境之间切换,所以想到了pyenv。以前一直使用的 vir
- 当一个函数进行完成后需要重定向到一个带参数的urlURLpath('peopleapply/<int:jobid>/
- 前言:在爬取并下载网页上的视频的时候,我们需要实时进度条,这可以帮助我们更直观的看到视频的下载进度。一、全部代码展示from context
- 我们小组讨论的话题是tab(标签)在使用时的禁忌。在讨论的开始,大家很快产生了六个感兴趣的话题:如何处理海量的tab?在浏览器中关掉tab之
- MySQL默认编码是latin1,因业务需要把它转到UTF8。1、导出数据导出表结构 mysqldump -d dataname >
- 直接pip install impala 是不行滴,按照以下步骤安装就会成功!一路安装就可以1、pip install six2、pip i
- 基本的字符串位置查找方法Python 查找字符串使用 变量.find("要查找的内容"[,开始位置,结束位置]),开始位
- 目录一 背景二 库简介三 代码3.1 创建表格3.2 增加row3.3 增加column3.4 打印表格3.5 边框操作3.6 输出json
- 用matplotlib.pyplot画的图,显示和保存的图片周围都会有白边,可以去掉。为了显示的更清楚,给图片加了红色的框代码“` impo
- 导语小伙伴们大家好~如今的游戏可谓是层出不穷,NBA 2K系列啊,FIFA系列啊更是经典中的经典,不过小编发现,赛车游戏也是深受大家欢迎啊,
- 如果显示网格,代码应类似这样:<div class="container"><div class=&q
- 前言容器数据类型包括数组list,字典dict以及元组tuple等。本篇,将详细介绍ChainMap字典序列的使用。ChainMapChai
- Sample:http://www.happyshow.org/sample/20060613/nav/nav.html<!DOCTY
- 一、切换到Oracle用户su – oracle二、登录到sys用户sqlplus / as sysdba三、创建临时表空间//查询临时表空
- Pytorch torch.distributions库包介绍torch.distributions包包含可参数化的概率分布和采样函数。 这
- 在html中关于select元素的问题在很多地方都提出过,而在前段时间的项目中,刚好遇到了关于select元素的两个小问题,这里进行一下总结
- 最近,QQ的办公版本——TIM进行了一次更新升级。本次更新升级大幅修改了界面的样式,看起来更加的清爽、简洁和高效了。这种界面州的先生还是比较