pygame错误:TypeError:必须是2项序列
我想在大学项目中看看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 个回答
2
你需要传递一个单独的 tuple
,而不是两个分开的 int
来设置分辨率。仔细看看 pygame 的文档
screen = pygame.display.set_mode((screen_width, screen_height))
6
你需要一个 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
运行结果是:
截图
控制台
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$