SetWindowPos не устанавливает окно pygame поверх остальных

Пишу приложение на python + pygame. Приведённая ниже функция должна (по идее) создавать окно и делать его поверх остальных. Где бы я не смотрел, а смотрел я много где, всё сводится примерно к такому решению. Ничего не предвещало беды, однако есть проблема, этот код не работает!

def create_window(self, size):
    from ctypes import windll

    self.display = pygame.display.set_mode(size)

    window = pygame.display.get_wm_info()['window']
    # window = windll.user32.GetForegroundWindow()

    windll.user32.SetWindowPos(window, -1, 0, 0, 0, 0, 0x0001)

Функция выполняется при запуске программы практически сразу (проверено). После производится регулярная обработка событий и обновление дисплея, ума не приложу что может быть не так. Более того, точно такой же код работал в другом проекте на старой машине (тоже Windows 10). Буду очень благодарен, если поможете найти решение.

Вот весь код хоть как-то связанный с отображением:

class HUDTools:
    DISPLAY_FLAGS = None
    FRAMES_DELAY = 250  # 40 FPS

    LOAD_ON_START = ["apps\\welcome"]

    def __init__(self):
        self._display_manager = DisplayManager()
        self._event_processor = EventProcessor()
        self._app_manager = AppManager()

    def _update(self):
        self._display_manager.display.fill((255, 255, 255))
        pygame.display.update()

    def regenerate_window(self):
        bbox = core.BBox((0, 0))
        for app in self._app_manager.get_active_rack().apps:
            bbox += self._app_manager.get_bounds(app)

        self._display_manager.create_window(bbox.get_size())

    def _mainloop(self):
        while not self._event_processor.done:
            self._event_processor.process()
            self._update()

            pygame.time.wait(HUDTools.FRAMES_DELAY)

    def start(self):
        # Creating a first rack (group of apps)
        self._app_manager.create_rack(set_active=True)

        for path in HUDTools.LOAD_ON_START:
            app = self._app_manager.load_app(path)
            self._app_manager.append_to_active_rack(app)

        self.regenerate_window()

        self._mainloop()


class DisplayManager:
    def __init__(self):
        self.display = None

    def create_window(self, size):
        from ctypes import windll

        self.display = pygame.display.set_mode(size)

        window = pygame.display.get_wm_info()['window']
        # window = windll.user32.GetForegroundWindow()

        windll.user32.SetWindowPos(window, -1, 0, 0, 0, 0, 0x0001)

При запуске окно появляется и работает как обычно, единственное что идёт не по плану, так это то что окно не остаётся поверх остальных при выделении какого-либо другого окна.


Ответы (0 шт):