pygame显示自动调整大小

时间:2019-06-17 05:41:39

标签: python pygame

要调整显示尺寸,我将编写如下代码:

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 个答案:

答案 0 :(得分:1)

首先,必须使用单个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,并且可以轻松地删除它。仅在用户应该能够调整窗口大小时使用。