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

时间:2014-06-12 16:17:35

标签: 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 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所需的所有模块。

也许你可以帮助我。

2 个答案:

答案 0 :(得分:4)

你需要一个tuple,而不是整数:

screen = pygame.display.set_mode((screen_width,screen_height))

这是因为您可以将其他变量传递到set_mode

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

运行方式:

截图

ScreenShot

控制台

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$ 

如您所见[{3}},您需要方括号或尺寸周围的常规括号。

答案 1 :(得分:2)

您需要传递一个tuple,而不是两个单独的int进行解析。仔细查看pygame docs

screen = pygame.display.set_mode((screen_width, screen_height))