python使用tkinter实现透明窗体

 更新时间:2021年05月17日 16:03:16   作者:dhjabc_1  
一直在思索实现一个透明的窗体,然后可以基于这个窗体可以开发出各种好玩的应用(如桌面运动的小人、运动的小球、截图、录制GIF等等),今天无意间居然让我把其中一个最核心的技术难关突破了,我非常高兴,也借这个机会跟大家分享一下。

一、基础说起

(一)实现最简单的窗体

from tkinter import *

if __name__ == '__main__':

    tk = Tk()
    tk.geometry('500x400+500+150')
    tk.title('有趣的透明窗体-开篇了!!!')
    canvas = Canvas(tk)
    canvas.pack(fill=BOTH, expand=Y)
    tk.mainloop()

太简单了,不详细说了,相信大家都看得懂。
效果:

感觉空寥寥的,什么都没有,好无聊啊。

二、好戏开始了

也许最有趣的透明窗体就是从这么简单的代码开始。

我们可以设置一个叫做透明色的颜色,然后让窗体canvas画一个矩形框,然后将这个矩形框的内色设置成透明色,那这个窗体不就透明了吗?

呵呵,是不是太简单了。
那我们就开始设置一下。

(一)把灰色设置成透明色

TRANSCOLOUR = 'gray'
tk.wm_attributes('-transparentcolor', TRANSCOLOUR)

(二)放置一个矩形框在canvas上。

canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)

(三)大家有发现变化吗?

from tkinter import *

if __name__ == '__main__':
    TRANSCOLOUR = 'gray'
    tk = Tk()
    tk.geometry('500x400+500+150')
    tk.title('有趣的透明窗体-开篇了!!!')

    canvas = Canvas(tk)
    canvas.pack(fill=BOTH, expand=Y)

    canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)
    tk.mainloop()

发现,程序完全不鸟我的代码,还是原来的老样子。

但是逻辑没有错误啊,代码也没有报错啊,那到底哪里错了呢?

三、成功的背后总有残缺

不断摸索后,原来思路是对的,但是窗体很努力,它会不断的重复调用重画窗体的操作,也就是说在后面自动重画的过程中,程序调用默认的代码,把我设置的透明窗体覆盖了,所以,透明窗体不见了。

(一)让透明窗体不断重画的onsize函数

def on_resize(evt):
    tk.configure(width=evt.width,height=evt.height)
    canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)
    print(canvas.winfo_width())

(二)绑定onsize函数

tk.bind('<Configure>', on_resize)

(三)最终的效果

哈哈,效果出来了,真的透明了,开心、高兴。

(四)录制了个动态看看

好吧,写完,完整的代码就先不发了,大家有兴趣可以看上面的过程,自己整合就可以凑成完整的代码,自己动动手,也许比我直接分享最终代码的效果更好。

将一件事情做到极致,也许你会得到更大的快乐!
比心!

以上就是python使用tkinter实现透明窗体的详细内容,更多关于python tkinter实现透明窗体的资料请关注脚本之家其它相关文章!

相关文章

  • Python关于反射的实例代码分享

    Python关于反射的实例代码分享

    在本篇文章里小编给大家整理的是一篇关于Python关于反射的实例代码分享,有需要的朋友们可以参考下。
    2020-02-02
  • 利用Python制作PPT的完整步骤

    利用Python制作PPT的完整步骤

    这篇文章主要给大家介绍了关于如何利用Python制作PPT的相关资料,主要利用的是python-pptx库,我们可以通过写脚本,来定时执行更新ppt内容,需要的朋友可以参考下
    2021-09-09
  • python基于opencv检测程序运行效率

    python基于opencv检测程序运行效率

    这篇文章主要介绍了python基于opencv检测程序运行效率,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 使用Python更换外网IP的方法

    使用Python更换外网IP的方法

    这篇文章主要介绍了使用Python更换外网IP的方法,,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Python实现调度算法代码详解

    Python实现调度算法代码详解

    这篇文章主要介绍了Python实现调度场算法代码详解,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • Python Bleach保障网络安全防止网站受到XSS(跨站脚本)攻击

    Python Bleach保障网络安全防止网站受到XSS(跨站脚本)攻击

    Bleach 不仅可以清理 HTML 文档,还能够对链接进行处理,检查是否是合法格式,并可以使用白名单来控制哪些 HTML 标签、属性是安全的,因此非常适合用于清洁用户输入的数据,确保网站安全
    2024-01-01
  • Python3.7 读取音频根据文件名生成脚本的代码

    Python3.7 读取音频根据文件名生成脚本的代码

    这篇文章主要介绍了Python3.7 读取音频根据文件名生成字幕脚本的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Linux下多个Python版本安装教程

    Linux下多个Python版本安装教程

    这篇文章主要为大家详细介绍了Linux下多个Python版本的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • pytorch中with torch.no_grad():的用法实例

    pytorch中with torch.no_grad():的用法实例

    最近在看别人写的代码,遇到经常使用with torch.no_grad(),所以下面这篇文章主要给大家介绍了关于pytorch中with torch.no_grad():用法的相关资料,需要的朋友可以参考下
    2022-03-03
  • python 梯度法求解函数极值的实例

    python 梯度法求解函数极值的实例

    今天小编就为大家分享一篇python 梯度法求解函数极值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论