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
相关产品推荐
相关产品推荐

