如何用Python创建一个中间透明的GUI界面?

正在做一个程序是识别视频中一个特殊的物体, 现在为了方便测试想在视频里找到这个物体的时候用一个红方框圈住这个物体, 我想的是做一个中间透明边框的 gui, 设置位置创建一个窗口.

我用的 tkinter 做的, 搜到了两个方法都不理想

  1. 设置 gui 的透明度, 但是这个没法设置边框的透明度, 整个窗口都透明了
  2. gui 加载一个透明图片, 这个不行, 而且, 我想要的方框大小不固定, 所以不能加载一个固定的透明的中见透明的红方框进来。

所以, 想知道有没有方法用 tkinter 实现这个需求, 或者其他的方法?

多谢~


如何用Python创建一个中间透明的GUI界面?

2 回复
import tkinter as tk

def create_transparent_window():
    # 创建主窗口
    root = tk.Tk()
    root.title("透明GUI界面")
    root.geometry("400x300")
    
    # 设置窗口整体透明度(0.0完全透明,1.0完全不透明)
    root.attributes('-alpha', 0.8)
    
    # 设置窗口背景色为透明(需要系统支持)
    root.configure(bg='systemTransparent')
    
    # 创建一个Frame作为内容容器,设置自己的背景色
    content_frame = tk.Frame(root, bg='lightblue', padx=20, pady=20)
    content_frame.pack(expand=True, fill='both')
    
    # 添加一些控件
    label = tk.Label(content_frame, 
                    text="中间透明的GUI界面",
                    font=('Arial', 16),
                    bg='lightblue')
    label.pack(pady=20)
    
    button = tk.Button(content_frame,
                      text="点击我",
                      command=lambda: print("按钮被点击"))
    button.pack(pady=10)
    
    # 设置窗口任务栏图标(可选)
    root.iconbitmap(default='')  # 留空使用默认图标
    
    return root

if __name__ == "__main__":
    app = create_transparent_window()
    app.mainloop()

这个代码创建了一个透明度为80%的窗口。关键点:

  1. root.attributes('-alpha', 0.8) 控制整个窗口透明度
  2. bg='systemTransparent' 让窗口背景透明(Windows系统支持)
  3. 内容放在Frame里,Frame可以有自己的背景色

如果要实现中间部分透明、四周不透明的效果,需要更复杂的处理,比如使用透明PNG图片作为背景,或者考虑用PyQt/PySide,它们对透明度的控制更灵活。

简单说就是:用attributes('-alpha')设置透明度。


虽然不懂 python,但是为神马要弄个窗口挡在上面
不应该是在相应位置,用类似 drawRect 的 api 绘制一个红色的方框吗

回到顶部