python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
作者:dhjabc_1 时间:2023-04-29 11:00:24
在上一篇的基础上,继续在透明窗体上绘制小球,
一、画个大球看看
(一)核心代码
在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
标签:python,tkinter,透明窗体,小球
0
投稿
猜你喜欢
php正则过滤html标签、空格、换行符的代码(附说明)
2023-07-22 07:58:01
python定时任务sched库用法简单实例
2023-11-07 07:26:14
详解Python使用OpenCV如何确定一个对象的方向
2022-04-06 04:16:42
MySQL limit性能分析与优化
2024-01-17 09:26:49
200 行python 代码实现 2048 游戏
2021-08-06 16:17:35
详解python编译器和解释器的区别
2023-06-26 03:53:09
opencv-python图像增强解读
2022-10-10 04:29:16
python 字符串转列表 list 出现\\ufeff的解决方法
2023-11-24 18:47:06
关于VSCode 配置使用 PyLint 语法检查器的问题
2023-06-18 17:10:33
python matplotlib饼状图参数及用法解析
2021-08-25 16:02:52
基于mysql多实例安装的深入解析
2024-01-21 01:59:27
PHP PDOStatement::fetchAll讲解
2023-06-14 15:54:26
fetch 使用及如何接收JS传值
2024-04-29 13:11:21
详解Go 中的时间处理
2024-02-03 08:26:21
Windows和Linux下Python输出彩色文字的方法教程
2021-04-15 11:15:41
Python Web编程之WSGI协议简介
2022-08-30 10:39:03
go语言编程学习实现图的广度与深度优先搜索
2024-05-22 10:16:34
sql server创建复合主键的2种方法
2024-01-26 11:10:38
vue检测对象和数组的变化分析
2023-07-02 16:55:48
一次性彻底讲透Python中pd.concat与pd.merge
2023-02-06 19:04:33