Tkinter 可以部分点击吗? (仅限 Windows)
Tkinter partially click through-able? (Windows only)
我正在编写一个将标尺悬停在所有其他屏幕内容上的应用程序。我使用以下方法使 tkinter window 和关联的 canvas 透明:
root.overrideredirect(True) #This hides the window outline/controls
root.state('zoomed') #This scales the window to fill the page
root.configure(background=bgColor) #Set bg color of window (used to make transparent \/)
root.wm_attributes("-transparentcolor", bgColor) #Necessary for transparent, window
root.lift()#Lifting window above all others
root.wm_attributes("-topmost", True)#Hold window on top of all other windows
在使用 pyinstaller 编译为 exe 之前,我能够在透明的地方点击这个应用程序。然而,在编译为 exe 后,这不再是可能的。
我尝试了这里分享的解决方案:
然而,这使得整个 window 可以点击,这意味着我不能再与顶部的非透明部分进行交互 window (我必须能够这样做)。
hwnd = win32gui.FindWindow(None, "Digital Ruler") # Getting window handle
# hwnd = root.winfo_id() getting hwnd with Tkinter windows
# hwnd = root.GetHandle() getting hwnd with wx windows
lExStyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
lExStyle |= win32con.WS_EX_TRANSPARENT | win32con.WS_EX_LAYERED
win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE , lExStyle )
我需要能够 move/interact 根 window 的任何彩色部分,但需要能够点击任何透明部分...到目前为止我只能完全抓住鼠标或完全错过。
我也遇到过这个问题...
经过多次尝试,我发现如果将 exe 文件与同样由 pyinstaller 生成的清单文件一起分发,点击功能将按预期工作。
我正在编写一个将标尺悬停在所有其他屏幕内容上的应用程序。我使用以下方法使 tkinter window 和关联的 canvas 透明:
root.overrideredirect(True) #This hides the window outline/controls
root.state('zoomed') #This scales the window to fill the page
root.configure(background=bgColor) #Set bg color of window (used to make transparent \/)
root.wm_attributes("-transparentcolor", bgColor) #Necessary for transparent, window
root.lift()#Lifting window above all others
root.wm_attributes("-topmost", True)#Hold window on top of all other windows
在使用 pyinstaller 编译为 exe 之前,我能够在透明的地方点击这个应用程序。然而,在编译为 exe 后,这不再是可能的。
我尝试了这里分享的解决方案:
hwnd = win32gui.FindWindow(None, "Digital Ruler") # Getting window handle
# hwnd = root.winfo_id() getting hwnd with Tkinter windows
# hwnd = root.GetHandle() getting hwnd with wx windows
lExStyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
lExStyle |= win32con.WS_EX_TRANSPARENT | win32con.WS_EX_LAYERED
win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE , lExStyle )
我需要能够 move/interact 根 window 的任何彩色部分,但需要能够点击任何透明部分...到目前为止我只能完全抓住鼠标或完全错过。
我也遇到过这个问题...
经过多次尝试,我发现如果将 exe 文件与同样由 pyinstaller 生成的清单文件一起分发,点击功能将按预期工作。