我是编程新手。我试图将pygame检测到的最高分辨率转换为整数但我在尝试将元组转换为int时收到错误。
我知道我无法更改元组,但我正在创建一个新的int并且它不会接受元组值。
所以我终于通过首先将元组转换为列表来解决这个错误。
import pygame, sys, time, random
from pygame.locals import *
pygame.init()
modes = pygame.display.list_modes()
maxWindow = list(modes[0])
WINDOWWIDTH = int(maxWindow[0])
WINDOWHEIGHT = int(maxWindow[1])
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), pygame.FULLSCREEN)
是否有更有效的方式进行此转换?我猜测我还有很长的路要走。
此外,是否有一个pygame函数可以自动检测我的最大或原始分辨率,这个代码是不必要的?
由于
答案 0 :(得分:2)
您可以尝试map
功能:
WINDOWWIDTH, WINDOWHEIGHT = map(int, modes[0])
正如@LukasGraf所提到的,pygame.display.list_modes()
返回包含整数的元组列表,因此,映射到int 是不必要的。相反,你可以这样做:
WINDOWWIDTH, WINDOWHEIGHT = modes[0]
答案 1 :(得分:0)
克里斯蒂安的回答符合你的需要。您还可以了解list comprehensions,它为映射,过滤等提供了通用结构。使用列表推导,您可以通过以下方式执行相同的操作:
WINDOW_WIDTH, WINDOW_HEIGHT = [int(x) for x in modes[0]]