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  # 边框宽度
                      )

运行效果如下:

python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)

嘻嘻,是不是觉得有点意思。

好吧,后续我会分享这部分的完整代码给各位,希望大家不是拿来主义,能点点赞、关注一下我啊。

二、让小球随机运动起来

(一)核心函数


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)

(二)运行效果

python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)

随机的小球运动效果就出来了。

三、更多参数的优化

(一)去掉标题栏


tk.overrideredirect(1)

(二)置顶显示


tk.wm_attributes("-topmost", 1)

(三)把旁边的白边去掉


canvas.config(highlightthickness=0)

呵呵,窗体最后就变成光秃秃的了。
也许按需使用会更好!!

(四)运行效果

python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)

呵呵,什么都没有了,只剩下随机的小球还在界面上显示。

代码量不大,效果还行。
再深入研究可以有更多更有趣的应用。

来源: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
  • asp之家 网络编程 m.aspxhome.com