在PyInstaller编译时在Tkinter Canvas Item上使用时出现SetLayeredWindowAttributes错误

时间:2018-02-27 15:44:25

标签: python pyinstaller

我正在使用透明的Tkinter窗口为游戏创建叠加HUD。

SetLayeredWindowAttributes抛出错误解释"参数不正确"。但这只发生在使用PyInstaller的程序的编译版本中。如果我从PyCharm启动它,代码完美无缺。

canvas = Canvas(root, width = prereswidth, height = preresheight, bg = 'black', bd=0, highlightthickness=0)
canvas.master.overrideredirect(True)
canvas.master.wm_attributes("-topmost", True)
canvas.master.wm_attributes("-disabled", True)
canvas.master.wm_attributes("-transparentcolor", "black")
canvas.pack()


hwnd = root.winfo_id()  # getting hwnd with Tkinter windows
lExStyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
lExStyle = win32con.WS_EX_COMPOSITED | WS_EX_TRANSPARENT
win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE, lExStyle)


hwnd2 = canvas.winfo_id()
lExStyle = win32gui.GetWindowLong(hwnd2, win32con.GWL_EXSTYLE)
lExStyle = win32con.WS_EX_LAYERED | win32con.WS_EX_COMPOSITED | win32con.WS_EX_TRANSPARENT | win32con.WS_EX_TOPMOST | win32con.WS_EX_NOACTIVATE
win32gui.SetWindowLong(hwnd2, win32con.GWL_EXSTYLE, lExStyle)
SetLayeredWindowAttributes(hwnd2, RGB(0, 0, 0), 0, LWA_COLORKEY);

我相信我的问题可能与Tkinter画布项目的工作方式有关。我已经尝试了我能想到的一切,并用Google搜索了几个小时。我的智慧结束了这个。

0 个答案:

没有答案