Заблокируйте мышь внутри окна, используя окно Python ModernglPython

Программы на Python
Anonymous
Заблокируйте мышь внутри окна, используя окно Python Moderngl

Сообщение Anonymous »

Я пытаюсь создать интерактивный фрагментный шейдер, используя Moderngl_window, с полным управлением 3D-камерой. Я хочу сделать то, что делает почти каждая 3D-игра — ограничить курсор активным окном, чтобы курсор не мог покинуть окно или даже достичь границы. Я хотел бы найти решение, использующее Python. Я был бы согласен переключиться с Moderngl_window на какую-нибудь другую подобную альтернативу, если бы это оказалось самым простым вариантом (который также позволяет мне скрывать курсор, как это делает Moderngl_window). Я бы предпочел не использовать что-то вроде pyautogui для принудительного ограничения мыши. Слишком подвержен ошибкам и неуклюж. Если это полезная информация, я использую Arch Linux, и меня устраивает решение для конкретной ОС.
Я пробовал искать как в Интернете, так и в документации по Moderngl_window, но не нашел ничего полезного. Я видел, что в pygame есть встроенное решение, но я бы предпочел сначала спросить, есть ли какое-нибудь лучшее и более простое решение.
Вот некоторый шаблонный код, который я использую для Moderngl_window, на случай, если он каким-либо образом будет полезен.

Код: Выделить всё

import moderngl_window as mgl

class App(mgl.WindowConfig):
window_size = 1336, 768
resource_dir = "src"
cursor = False
fullscreen = True

def __init__(self, **kwargs):
super().__init__(**kwargs)
self.quad = mgl.geometry.quad_fs()
self.prog = self.load_program(
vertex_shader = "vertex.glsl",
fragment_shader = "frag.glsl")
self.prog["resolution"] = self.window_size

def render(self, time, frame_time):
self.ctx.clear()
try:
self.prog["time"] = time
except:
pass
self.quad.render(self.prog)

if __name__ == "__main__":
mgl.run_window_config(App)
Спасибо!

Вернуться в «Python»