You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter全屏覆盖层问题:鼠标无法点击下层窗口

解决Tkinter全屏覆盖层遮挡下层窗口点击的问题

我正在制作一个类似Twitch Overlay的全屏覆盖层,但遇到一个问题:当鼠标放在Tkinter图片上方时,无法点击下方的窗口。我尝试用cursor='none'让光标在悬停图片时隐藏,但下层窗口还是没法点击,我的代码如下:

import tkinter as tk


root = tk.Tk()
#root.geometry('')
root.overrideredirect(True)
root.config(bg="blue")
root.attributes("-transparentcolor", "blue",'-topmost','true')
#root.lift()
#root.wm_attributes('-disabled',True)

canvas = tk.Canvas(root, bg="blue")
canvas.configure(width = 1280, height = 720)
canvas.grid()

tk_img = tk.PhotoImage(file="1.png")
canvas.create_image(0, 0, image=tk_img, anchor="nw")

root.mainloop()

要让覆盖层不阻挡下层窗口的点击,核心是让Tkinter窗口忽略鼠标事件,只保留视觉显示。可以通过以下修改实现:

  • 启用窗口的-disabled属性,让窗口完全不接收鼠标事件,鼠标操作会直接穿透到下层窗口
  • 适配屏幕尺寸,确保覆盖层是真正的全屏,避免出现覆盖不全的情况

修改后的完整代码:

import tkinter as tk

root = tk.Tk()
root.overrideredirect(True)
# 获取当前屏幕的尺寸,实现全屏覆盖
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.geometry(f"{screen_width}x{screen_height}")

root.config(bg="blue")
# 关键配置:添加-disabled=True,让窗口忽略所有鼠标交互
root.attributes("-transparentcolor", "blue", '-topmost', 'true', '-disabled', True)

# 去掉Canvas默认边框,避免出现多余的蓝色边缘
canvas = tk.Canvas(root, bg="blue", highlightthickness=0)
canvas.configure(width=screen_width, height=screen_height)
canvas.pack()

tk_img = tk.PhotoImage(file="1.png")
# 按左上角锚点显示图片,若图片尺寸与屏幕不符,可自行调整缩放参数
canvas.create_image(0, 0, image=tk_img, anchor="nw")

root.mainloop()

额外说明:

  • -disabled=True是解决遮挡问题的核心,它会让窗口失去所有交互能力,鼠标点击、悬停等操作都会直接作用到下层窗口
  • highlightthickness=0用于消除Canvas自带的边框,保证透明效果的完整性
  • 使用winfo_screenwidth()和winfo_screenheight()可以适配不同分辨率的屏幕,实现真正的全屏覆盖

内容的提问来源于stack exchange,提问作者Plus Ultra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:46:00