Python pygame错误:TypeError:必须是2项序列

Python pygame错误:TypeError:必须是2项序列,python,pygame,typeerror,Python,Pygame,Typeerror,我想看看一个大学项目的pygame模块。我发现了一个很短的教程,我按照它为游戏创建了一个窗口 这是我的代码: import sys import pygame from pygame.locals import * pygame.init() screen_width = 800 screen_height = 600 screen = pygame.display.set_mode(screen_width,screen_height) pygame.display.set_caption

我想看看一个大学项目的pygame模块。我发现了一个很短的教程,我按照它为游戏创建了一个窗口

这是我的代码:

import sys
import pygame
from pygame.locals import *

pygame.init()

screen_width = 800
screen_height = 600
screen = pygame.display.set_mode(screen_width,screen_height)
pygame.display.set_caption("pygame test")
pygame.mouse.set_visible(True)

done = False
while not done:
  for event in pygame.event.get():
    if (event.type == KEYUP) or (event.type == KEYDOWN):
      print(event)
    if (event.key == K_ESCAPE):
      done = True
如果我尝试执行应用程序,它将失败,并出现以下错误:

screen=pygame.display.set_mode(screen_width,screen_height)
TypeError: must be 2-item sequence, not int
就我所理解的函数调用而言,它应该和我的示例中一样工作。对网上错误的进一步研究并没有给我带来任何有用的结果

我正在运行OSX Mavericks、X11(或更好的XQuartz)以及最新的python运行时,并且安装了pygame所需的所有模块


也许你能帮我。

你需要传递一个
元组,而不是两个独立的
int
来解析。仔细地看这张照片


您需要的是元组,而不是整数:

screen = pygame.display.set_mode((screen_width,screen_height))
这是因为您可以将其他变量传递到
set\u模式

screen = pygame.display.set_mode((screen_width, screen_height), 0, 32)
以下是您编辑的代码:

import sys
import pygame
from pygame.locals import *

pygame.init()

screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width,screen_height))
pygame.display.set_caption("pygame test")
pygame.mouse.set_visible(True)

done = False
while not done:
  for event in pygame.event.get():
    if (event.type == KEYUP) or (event.type == KEYDOWN):
      print(event)
    if (event.key == K_ESCAPE):
      done = True
其运行方式如下:

截图

安慰
bash-3.2$python test.py
bash-3.2美元
如您所见,在尺寸标注周围需要方括号或常规括号。
import sys
import pygame
from pygame.locals import *

pygame.init()

screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width,screen_height))
pygame.display.set_caption("pygame test")
pygame.mouse.set_visible(True)

done = False
while not done:
  for event in pygame.event.get():
    if (event.type == KEYUP) or (event.type == KEYDOWN):
      print(event)
    if (event.key == K_ESCAPE):
      done = True
bash-3.2$ python test.py
<Event(2-KeyDown {'scancode': 0, 'key': 304, 'unicode': u'', 'mod': 0})>
<Event(2-KeyDown {'scancode': 0, 'key': 310, 'unicode': u'', 'mod': 1})>
<Event(3-KeyUp {'scancode': 0, 'key': 304, 'mod': 1024})>
<Event(3-KeyUp {'scancode': 0, 'key': 310, 'mod': 0})>
bash-3.2$