我一直在思索实现一个透明的窗体,然后可以基于这个窗体可以开发出各种好玩的应用(如桌面运动的小人、运动的小球、截图、录制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)
@H_502_51@(二)放置一个矩形框在canvas上。canvas.create_rectangle(0, 0, canvas.winfo_wIDth(), canvas.winfo_height(), fill=TRANSColOUR, outline=TRANSColOUR)
@H_502_51@(三)大家有发现变化吗?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()
发现,程序完全不鸟我的代码,还是原来的老样子。
三、成功的背后总有残缺但是逻辑没有错误啊,代码也没有报错啊,那到底哪里错了呢?
不断摸索后,原来思路是对的,但是窗体很努力,它会不断的重复调用重画窗体的 *** 作,也就是说在后面自动重画的过程中,程序调用默认的代码,把我设置的透明窗体覆盖了,所以,透明窗体不见了。
@H_502_51@(一)让透明窗体不断重画的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())
@H_502_51@(二)绑定onsize函数tk.bind('<Configure>', on_resize)
@H_502_51@(三)最终的效果哈哈,效果出来了,真的透明了,开心、高兴。
总结将一件事情做到极致,也许你会得到更大的快乐!
比心!
以上是内存溢出为你收集整理的python使用tkinter实现透明窗体的开篇之作-基础框架介绍全部内容,希望文章能够帮你解决python使用tkinter实现透明窗体的开篇之作-基础框架介绍所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)