LINUX.ORG.RU

Как в полноэкранном режиме зайдействовать только один монитор?

 , ,


0

1

Доброго времени суток! Подскажите как PyGame-дисплей в полноэкранном режиме расположить только на одном из мониторов, когда их 2? Вот например VLC, он разворачивается только на текущем мониторе, а дисплей в PyGame сразу на 2 монитора, в некоторых случаях это может и удобно конечно, но мне нужно именно на одном мониторе запускать приложение. Благодарю!



Последнее исправление: unclechu (всего исправлений: 1)

Выставь

os.environ['SDL_VIDEO_FULLSCREEN_DISPLAY'] = '0'
должно помочь. Если что, можно использовать и SDL_VIDEO_FULLSCREEN_HEAD, вроде однофигственно с sdl 1.2.14.

P.S. да, делать это нужно ДО pygame.init()

Boba_Fett
()
Последнее исправление: Boba_Fett (всего исправлений: 1)
Ответ на: комментарий от unclechu

Ни то ни другое не помогло, делал ДО pygame.init().

Ладно, попробую сегодня взглянуть, напишу, если что.

Boba_Fett
()
Ответ на: комментарий от unclechu

Вот например VLC, он разворачивается только на текущем мониторе, а дисплей в PyGame сразу на 2 монитора

Запустил федору, набросал говнокод:

import os
import pygame as pg

os.environ['SDL_VIDEO_FULLSCREEN_DISPLAY'] = '0'
pg.display.init()

full = True
size = (1024, 768)
flags = pg.DOUBLEBUF | pg.HWSURFACE | (pg.FULLSCREEN & -full)
screen = pg.display.set_mode(size, flags)
pg.mouse.set_visible(not full)

running = True
while running:
	for e in pg.event.get():
		if e.type == pg.QUIT or e.type == pg.KEYDOWN:
			running = False

Окно развернулось лишь на один экран, второй был не задействован.

Ни то ни другое не помогло

Вопрос: что не работает-то? Чего хотим добиться?

Boba_Fett
()
Ответ на: комментарий от Boba_Fett

Прошу прощения, в своём коде допустил ошибку, теперь всё работает! Благодарю! Но тут же возникает пара вопросов:

  • Как получить количество дисплеев? Вот у меня 2 (0,1), как узнать что их 2? Ну или 3, или вовсе 1?
  • Как получить максимальное разрешение на текущем дисплее?
    size = max(pygame.display.list_modes()) # даёт суммарное разрешение всех дисплеев, а не текущего.
unclechu
() автор топика
Ответ на: комментарий от unclechu

SDL очень убог в плане поддержки нескольких дисплеев, поэтому и pygame этим же не блещет. Боюсь, что придется тебе копать в сторону python-xrandr, pyQt, wxPython (последние два - если тебе нужно мультиплатформенное решение) или чего-либо подобного, позволяющего нормально определить параметры и количество дисплеев.

Boba_Fett
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.