Linux系统下用tkinter实现透明背景十字准星的解决方案求助
Linux系统下用tkinter实现透明背景十字准星的解决方案求助
注意:我用的是Linux系统
我刚接触Python的tkinter GUI开发,现在想做一个只有文字显示、背景完全透明的组件(原本想做Text组件,现在用Canvas画了个红色+号),结果卡住了。
目前我已经能画出这个+号,但背景一直是白色的。试了用:
root.wm_attributes("-alpha", 0.5)
结果整个窗口都变半透明了,可背景还是白色,连那个红色的+号也跟着变透明了,这不是我想要的效果。
我想实现的是只有+号清晰显示,窗口背景完全透明,不会遮挡后面的内容,该怎么做呢?
以下是我的代码:
from tkinter import * def center_window(window): window.update_idletasks() width = window.winfo_width() height = window.winfo_height() screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() x = (screen_width - width) // 2 y = (screen_height - height) // 2 window.geometry(f"{width}x{height}+{x}+{y}") canvas.create_text(100, 100, text="+", fill="red", font=("Purisa", 20, "")) canvas.pack() root.wait_visibility(root) root.attributes("-alpha", 0.5) root=Tk() canvas = Canvas() center_window(root) root.mainloop()
现在的效果是:窗口整体半透明,但背景依然是白色,红色的+号也跟着变得半透明。
另外还有个小问题:当我点击窗口之外的区域时,窗口的透明效果就消失了,原本半透明的窗口会变回不透明的白色背景状态。
备注:内容来源于stack exchange,提问作者Z.Davey




