2015-04-05 5 views
1

В настоящее время я контролирую игру с помощью python, отправляя команды мыши и нажатия клавиш. То, что я хочу сделать, - это прозрачное окно Tkinter, лежащее поверх игры, чтобы предоставить некоторую информацию, такую ​​как местоположение мыши и цвет пикселя.Tkinter просматривает окно, не затронутое щелчками мыши

Я знаком с изменением альфа-атрибута окна, чтобы сделать его прозрачным, но не знаю, как всегда держать это окно впереди и проходить через него мышиные клики.

Мой текущий способ управления игрой включает в себя съемку снимков в определенных местах и ​​анализ содержимого цвета. Мне также понадобится какой-то способ сделать это без вмешательства окна Tkinter.

Pyscreenshot используется для снятия скриншотов win32api используется для нажатия

Спасибо, Алека

ответ

1

вы можете использовать функцию SetWindowLong из win32gui модуля. Если вы хотите прозрачное окно с кликом, вам нужно применить GWL_EXSTYLE в нашем окне. Поэтому вам нужен дескриптор окна вашего окна.

hwnd = win32gui.FindWindow(None, "Your window title") # 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) 

Если вы хотите изменить прозрачность окна с помощью использования WinAPI SetLayeredWindowAttributes.

Смежные вопросы