如何解决Python3.9+ win32gui透明按钮
我正在尝试使用 win32api 创建一个外部透明的按钮。我已经创建了一个透明的主窗口,它可以工作,直到我也将按钮定义为子项,然后它不再透明,而是黑色? 我的目标是在当前显示上方显示几个额外的按钮,并在单击时执行相应的脚本。 如何解决此问题以及如何注册事件以便我可以使用按钮? (按F9退出脚本)
import win32gui
import win32api
import win32con
import time
import os
from keyboard import register_hotkey
register_hotkey("F9",os._exit,[1])
def wndProc(hWnd,message,wParam,lParam):
if message == win32con.WM_PAINT:
print("plot")
return 0
elif message == win32con.WM_DESTROY:
print('Being destroyed')
win32gui.PostQuitMessage(0)
return 0
else:
return win32gui.DefWindowProc(hWnd,lParam)
# get instance handle
hInstance = win32api.GetModuleHandle()
# the class name
className = 'SimpleWin32'
# create and initialize window class
wndClass = win32gui.WNDCLASS()
wndClass.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW
wndClass.lpfnWndProc = wndProc
wndClass.hInstance = hInstance
wndClass.hCursor = win32gui.LoadCursor(None,win32con.IDC_ARROW)
wndClass.hbrBackground = win32gui.GetStockObject(win32con.WHITE_BRUSH)
wndClass.lpszClassName = className
# register window class
wndClassAtom = None
try:
wndClassAtom = win32gui.RegisterClass(wndClass)
except Exception as e:
print(e)
raise e
exStyle = win32con.WS_EX_COMPOSITED | win32con.WS_EX_LAYERED | win32con.WS_EX_NOACTIVATE | win32con.WS_EX_TOPMOST | win32con.WS_EX_TRANSPARENT
style = win32con.WS_DISABLED | win32con.WS_POPUP | win32con.WS_VISIBLE
hWindow = win32gui.CreateWindowEx(
exStyle,wndClassAtom,None,# WindowName
style,# x --> Start x
0,# y --> Start y
1920,# width
1080,# height
None,# hWndParent
None,# hMenu
hInstance,None # lpParam
)
# print(self.hWindow)
# Show & update the window
win32gui.SetLayeredWindowAttributes(hWindow,0x00ffffff,255,win32con.LWA_COLORKEY | win32con.LWA_ALPHA)
win32gui.SetWindowPos(hWindow,win32con.HWND_TOPMOST,win32con.SWP_NOACTIVATE | win32con.SWP_NOMOVE | win32con.SWP_NOSIZE |
win32con.SWP_SHOWWINDOW)
win32gui.ShowWindow(hWindow,win32con.SW_SHOWNORMAL)
win32gui.UpdateWindow(hWindow)
window_focused = False
hwndButton = win32gui.CreateWindowEx(
0,u"BUTTON",# Predefined class; Unicode assumed
u"OK",# Button text
win32con.WS_VISIBLE | win32con.WS_CHILD | win32con.BS_DEFPUSHBUTTON | win32con.BS_TEXT,# Styles
10,# x position
10,# y position
100,# Button width
100,# Button height
hWindow,# Parent window
None,# No menu.
hInstance,None) # Pointer not needed.
win32gui.ShowWindow(hWindow,win32con.SW_SHOWNORMAL)
win32gui.UpdateWindow(hWindow)
win32gui.PumpMessages()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。