python使用tkinter实现透明窗体

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python使⽤tkinter实现透明窗体
⽬录
⼀、基础说起
(⼀)实现最简单的窗体
⼆、好戏开始了
(⼀)把灰⾊设置成透明⾊
(⼆)放置⼀个矩形框在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()
太简单了,不详细说了,相信⼤家都看得懂。

效果:
感觉空寥寥的,什么都没有,好⽆聊啊。

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

我们可以设置⼀个叫做透明⾊的颜⾊,然后让窗体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实现透明窗体的资料请关注其它相关⽂章!。

相关文档
最新文档