Python Tkinter实现透明窗体随机小球绘制与动画

一颗松果
一颗松果
发布时间:2026-10-15 | 3人浏览过
原创

本文介绍如何在Python Tkinter透明窗体上绘制并动画显示随机小球。通过Canvas组件创建圆形,利用随机数生成位置、半径及RGB颜色,结合after方法实现持续运动。同时演示了去除标题栏、置顶显示及隐藏边框等窗口优化技巧,最终呈现简洁的随机小球视觉效果。

承接前文内容,本节将在透明窗体的基础上,进一步实现在其上绘制小球的功能。

一、绘制基础大球

(一)核心代码实现

在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)

经过上述处理,窗体最终变得简洁无多余装饰。 根据实际需求进行配置或许更为合适。

(四)最终运行效果


界面中已无其他元素,仅保留随机运动的小球。

虽然代码量不多,但达到了预期的视觉效果。 若深入探究,还可拓展出更多有趣的应用场景。

以上是关于使用Python Tkinter在透明窗体上绘制随机小球的详细实现,更多关于Python Tkinter透明窗体小球的相关资料,敬请关注本站其他技术文章。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表