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

Tkinter 如何撤销窗口与控件已设置的clickthrough点击穿透效果

Tkinter 控件点击穿透效果撤销实现

要撤销已经设置的点击穿透效果,核心逻辑是清除控件扩展样式中添加的穿透相关标志位,完整的函数实现如下:

def revoke_click_through(hwnd):
    # 读取控件当前的扩展样式
    current_styles = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
    # 位运算清除点击穿透、分层窗口标志,保留其他原有样式不受影响
    new_styles = current_styles & ~(win32con.WS_EX_TRANSPARENT | win32con.WS_EX_LAYERED)
    # 写入更新后的扩展样式
    win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE, new_styles)
    # 如仅需取消穿透、保留分层透明效果,可删除上一行的win32con.WS_EX_LAYERED清除逻辑,并保留以下属性设置
    # win32gui.SetLayeredWindowAttributes(hwnd, 0, 255, win32con.LWA_ALPHA)

注意事项

  • 调用函数时传入的hwnd必须和设置穿透时使用的控件句柄完全一致,不要使用顶层窗口root的句柄
  • 若撤销穿透后需要同时取消窗口背景透明,可额外执行以下代码:
    root.config(bg='SystemButtonFace')
    root.attributes('-transparentcolor', '')
    

内容的提问来源于stack exchange,提问作者Thomas Meyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:06:03