Pygame выбирает, какой дисплей использовать в полноэкранном режиме

Это код:

#!/usr/bin/python

import pygame, sys
from pygame.locals import *
import Tkinter as tk

root = tk.Tk()

pygame.init()

w = 640
h = 400

RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)
PINK = (255, 0, 255)
CYAN = (0, 255, 255)
WHITE = (255, 255, 255)

screen = pygame.display.set_mode((w,h), RESIZABLE)
clock = pygame.time.Clock()
x = y = 100

tbar = False

Lbutton = Mbutton = Rbutton = MouseX = MouseY = None

logo = pygame.image.load("C:\\Users\\chef\\Desktop\\slogo.png").convert()

while 1:
    for event in pygame.event.get():
        screen.fill(WHITE)
        MouseX, MouseY = pygame.mouse.get_pos()
        Lbutton, Mbutton, Rbutton = pygame.mouse.get_pressed()
        pygame.draw.rect(screen, GREEN, ((0, h-40),(w,h)))
        if event.type == pygame.QUIT:
            sys.exit()  
        elif event.type==VIDEORESIZE:
            w = event.dict['size'][0]
            h = event.dict['size'][1]
            screen=pygame.display.set_mode(event.dict['size'],RESIZABLE)
        elif h - 50 < MouseY < h and MouseX <= 40 and Lbutton or screen.get_at(pygame.mouse.get_pos()) == (255, 0, 0, 255):
            tbar = True
        elif MouseY < h-50 or MouseX > 40 or Lbutton == False:
            tbar = False
        if tbar == True:
            pygame.draw.rect(screen, RED, ((0, h/2), (w/5, h/2-40)))
        if event.type is KEYDOWN and event.key == K_f:
            if screen.get_flags() & FULLSCREEN:
                w = 640
                h = 400
                pygame.display.set_mode((w,h))
            else:
                w = root.winfo_screenwidth()
                h = root.winfo_screenheight()
                pygame.display.set_mode((w,h), FULLSCREEN)
    screen.blit(logo, ((0, h-40),(40, h)))
    pygame.display.flip()
    clock.tick(60)

Когда я нажимаю клавишу F, он переключается в полноэкранный режим. Однако, если я запускаю программу, переместите окно на 2-й монитор, а затем нажмите F, на 1-м мониторе отобразится полный экран. Как выбрать монитор для отображения в полноэкранном режиме?

1 ответ

Что я знаю о pygame (1.9.x) / SDL < 2, так это о том, что он не поддерживает конфигурацию с двумя экранами, поэтому вы не можете выбирать экран.

Это изменится с pygame_sdl2, но это еще не готово.

Действительно, ваш код должен влиять на экран:

        if screen.get_flags() & FULLSCREEN:
            w = 640
            h = 400
            screen = pygame.display.set_mode((w,h), RESIZABLE)
        else:
            w = root.winfo_screenwidth()
            h = root.winfo_screenheight()
            screen = pygame.display.set_mode((w,h), FULLSCREEN)

В моей конфигурации с двумя экранами pygame делает некоторые странные вещи, переключается в полноэкранный режим и выполняет полноэкранный режим на экране 1 (в этом случае он не определяет использование полноэкранного режима), а затем на двух экранах (на этот раз обнаруживается полноэкранный режим и т. Д.).) и следующий возврат в оконный режим...

Может быть, попробуйте Pyglet делать то, что вы хотите.

Другие вопросы по тегам