Linux Mint Tkinter 透明窗口

3
我正在尝试使用Tkinter实现透明背景:
from tkinter import *
root = Tk()
root.attributes('-alpha', 0.1)
# root.wm_attributes('-alpha', 0.1) 
# root.wm_attributes("-transparentcolor", "white")
# root.attributes("-fullscreen",True)
root.mainloop()

这段代码在Windows上运行良好,但在Linux Mint Maya上无法使用。我已经尝试了其他选项并进行了注释。有什么建议可能出了什么问题吗?

2个回答

1

当您设置属性时,窗口还没有处于可以工作的状态。为了等待它达到这个状态,请添加 root.wait_visibility(root)

from tkinter import *
root = Tk()
root.wait_visibility(root)
root.attributes('-alpha', 0.6)
root.mainloop()

(令人困惑的是,它也可以作为其他某些操作的副作用而起作用,例如设置窗口状态,即使状态与当前状态相同。)

0

仅仅在Linux下设置root.attributes('-alpha', 0.1)对我来说没有任何作用,即使撤销/恢复窗口也是如此。但是出于我不知道的原因,如果您首先改变root的类型(甚至将其设置为“normal”),那么窗口就会变成透明的:

from Tkinter import *
root = Tk()
root.attributes('-type', 'normal')
root.attributes('-alpha', 0.1)
root.mainloop()

'-type' 是仅限于 X11 的属性。

至于您的其他尝试,attributeswm_attributes 是相同的函数,因此您使用 root.wm_attributes('-alpha', 0.1) 尝试也是不可行的。 此外,根据 tcl/tk 文档,'-transparentcolor' 是仅限于 Windows 的属性,因此在 Linux 中无法使用。


我认为它作为副作用起作用。你实际需要的是 root.wait_visibility(root) - 所以你需要让窗口处于某种状态,并且该命令具有导致此状态的副作用。 - Volker Siegel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接