如何修复Pygame程序运行时黑屏及‘argument of type 'module' is not iterable’错误(第13行)
解决Pygame窗口报错:TypeError: 'module' object is not iterable
嘿,这个问题太典型了,我刚摸Pygame的时候也犯过一模一样的逻辑错误!咱们一步步拆解问题:
错误原因分析
你代码里的这两行判断完全写混了:
if event.type in pygame == pygame.QUIT: if event.type in pygame == pygame.MOUSEBUTTONDOWN:
这里有两个核心问题:
in pygame完全是多余且错误的:in关键字是用来检查元素是否存在于列表、元组这类可迭代集合里的,但pygame是一个模块对象,根本不是可迭代的东西,所以Python直接抛出了TypeError。- 逻辑表达式完全偏离意图:你本来想判断「事件类型是不是退出/鼠标点击」,结果错误地把
in pygame和==硬凑在一起,逻辑彻底乱了。
修正后的代码
只需要把错误的判断改成直接比较事件类型就行,顺便帮你修正了一个颜色值的小bug(你写的WHITE第二个数值是225,应该是255才对),完整代码如下:
import pygame pygame.init() screen = pygame.display.set_mode((500,600)) GREY = (120,120,120) WHITE = (255,255,255) running = True while running: screen.fill(GREY) pygame.draw.rect(screen, WHITE, (100,50,50,50)) for event in pygame.event.get(): # 修正:直接判断事件类型为退出 if event.type == pygame.QUIT: running = False # 修正:直接判断事件类型为鼠标点击 if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: print("X") pygame.display.flip() pygame.quit()
现在运行这个代码,就能正常显示灰色窗口和白色方块,点击鼠标左键会打印"X",关闭窗口也能正常退出啦!
内容的提问来源于stack exchange,提问作者Python learner
相关产品推荐
相关产品推荐

