дисплей Pygame изменяет размер автоматически - PullRequest
1 голос
/ 17 июня 2019

Чтобы изменить размер дисплея, я написал бы код, подобный следующему:

pygame.display.set_mode((1000, 500), pygame.RESIZABLE)

Но мне не нравится рамка дисплея, поэтому я решил отклонить ее:

pygame.display.set_mode((1000, 500), pygame.NOFRAME, pygame.RESIZABLE)

И проблема здесь в том, чтобы начать, я хочу изменить размер экрана автоматически, нажимая клавишу или нажимая кнопку в окне Pygame, но я не могу изменить размер дисплея Pygame автоматически.

Я попробовал какой-то код, подобный этому (части кодов):

resize_y = 0 # Don't resize when the program start
console = pygame.display.set_mode((370, 500+resize_y), pygame.NOFRAME, pygame.RESIZABLE) # Expands by resize_y

def main():
  main = True

    while main:
      for event in pygame.event.get(): #skip quit code 
         if event.type == pygame.KEYDOWN and event.key == pygame.K_d:
             resize_y += 100 #Add resize_y

      console.fill((255, 255, 255)) # Fill background with white
      pygame.display.update()


main() # call main

Сообщение об ошибке не появилось, не сработало, и, конечно, я ожидал отображения экстента при нажатии D .

Как я могу исправить?

1 Ответ

1 голос
/ 17 июня 2019

Прежде всего, все флаги должны быть переданы в set_mode с единственным аргументом flags.В вашем коде вы передаете RESIZABLE в качестве аргумента depth.Используйте or для установки нескольких флагов.

Во-вторых, вы пишете:

Чтобы изменить размер экрана, я написал бы код, подобный следующему: pygame.display.set_mode ((1000,500), pygame.RESIZABLE)

но вы на самом деле не звоните pygame.display.set_mode после изменения resize_y.

Ваш код должен выглядеть примерно так:

import pygame

def main():
    resize_y = 0 # Don't resize when the program start
    console = pygame.display.set_mode((370, 500+resize_y), pygame.NOFRAME or pygame.RESIZEABLE) # Expands by resize_y

    running = True

    while running:
        for event in pygame.event.get(): #skip quit code 
            if event.type == pygame.QUIT:
                return
            if event.type == pygame.KEYDOWN and event.key == pygame.K_d:
                resize_y += 100 #Add resize_y
                console = pygame.display.set_mode((370, 500+resize_y), pygame.NOFRAME or pygame.RESIZEABLE)

        console.fill((255, 255, 255)) # Fill background with white
        pygame.display.update()


main() # call main

Но учтите, что флаг RESIZABLE в принципе бесполезен в сочетании с флагом NOFRAME.Если вы хотите изменить размер окна в вашем коде, вам не нужно RESIZABLE, и вы можете удалить его.Используйте его только тогда, когда пользователь сможет изменить размер окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...