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实现透明窗体的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341