python使用tkinter实现透明窗体

作者:dhjabc_1 时间:2022-09-10 00:58:40 

目录
  • 一、基础说起

    • (一)实现最简单的窗体

  • 二、好戏开始了

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

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

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

  • 三、成功的背后总有残缺

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

    • (二)绑定onsize函数

    • (三)最终的效果

  • (四)录制了个动态看看

    一、基础说起

    (一)实现最简单的窗体


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

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

    python使用tkinter实现透明窗体

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

    二、好戏开始了

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

    我们可以设置一个叫做透明色的颜色,然后让窗体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实现透明窗体

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

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

    来源:https://blog.csdn.net/dhjabc_1/article/details/116795808

    标签:python,tkinter,透明窗体
    0
    投稿

    猜你喜欢

  • Python import与from import使用和区别解读

    2021-06-22 08:51:02
  • 使用python 将图片复制到系统剪贴中

    2021-12-03 22:34:11
  • Python中eval()函数的详细使用教程

    2023-11-22 15:51:39
  • Django REST framework内置路由用法

    2022-04-06 14:22:35
  • Python之Scrapy爬虫框架安装及使用详解

    2022-10-02 18:28:20
  • 确定能够释放空间的SQL Server数据库文件的脚本

    2010-07-31 12:36:00
  • SQLserver 2000中出现“指定的服务并未以已安装的服务存在 解决方案

    2011-04-27 14:33:00
  • 浅谈微信小程序之官方UI框架we-ui使用教程

    2024-04-16 09:52:43
  • 解决pycharm 格式报错tabs和space不一致问题

    2022-10-12 11:36:12
  • SQL Server 2008 正式版安装指南 包含序列号

    2024-01-14 19:12:47
  • go语言实现聊天服务器的示例代码

    2024-04-26 17:17:39
  • 如何修改WAMP中mysql默认空密码的方法

    2024-01-25 01:49:51
  • 一些关于python 装饰器的个人理解

    2021-11-27 21:41:33
  • php中运用http调用的GET和POST方法示例

    2023-11-23 02:39:35
  • Script块放在另一个Script 块内方法

    2009-02-04 15:43:00
  • Python面向对象之类的内置attr属性示例

    2022-03-22 18:02:12
  • Python中的集合一起来学习一下

    2022-05-01 05:06:59
  • python开发之基于thread线程搜索本地文件的方法

    2023-05-11 18:49:12
  • Python采集大学教务系统成绩单实战示例

    2021-05-13 23:14:43
  • 解析如何在sqlserver代理中配置邮件会话

    2024-01-21 20:55:24
  • asp之家 网络编程 m.aspxhome.com