如何停止致命的Python错误:PyEval_SaveThread:NULL tstate

时间:2019-05-07 17:20:00

标签: python audio pygame fatal-error

当我插入声音并在Pygame中使用它时,它会退出,并向我显示此错误:致命的Python错误:PyEval_SaveThread:NULL tstate,我想修复它。...

我在带有Pycharme的Mac OS上使用python 3.7.2

-我尝试停用声音,以确保它是导致错误的声音,而实际上是因为当我停用声音时,Pygame并未退出也没有向我显示此错误

-我尝试将声音格式从wav更改为ogg

-我尝试将声音放在函数中而不是事件中

-尝试在事件中加载图片

所有这些都不起作用,尝试了随机的事情,不知道该怎么办...

听起来

    self.bulletOO = pg.mixer.Sound("Bullet.ogg")

如果self.aimR:

elf.bullet = Bullet(self.player.rect.x + 90 - self.bulletSpeed,
self.player.rect.y + self.y)   

self.bullet.image = pg.image.load("bulletP-R.png")

self.allSprites.add(self.bullet)

self.bulletGroupR.add(self.bullet)

self.bulletGroup.add(self.bullet)

self.bulletOO = pg.mixer.Sound("Bullet.ogg")

self.bulletOO.play()

我希望听到声音而游戏不会退出,但是它退出了,而且很奇怪,它随机退出了。我的意思是,在极少数情况下它不会消失,但是如果我继续拍摄(使用声音),它会突然消失,有时它会从第一次消失...

2 个答案:

答案 0 :(得分:0)

尝试以下代码:

pygame.mixer.music.load('Bullet.ogg')
pygame.mixer.music.play()

并在此处查看文档:{​​{3}}

答案 1 :(得分:0)

造成此问题的根本原因可能是SDL错误,但以我的经验,可以通过显式设置混频器的频率来解决它。默认情况下,在pygame 1中,混频器频率设置为22050;在pygame 2中将其设置为44100。在pygame 1中将其设置为44100阻止了我的崩溃:

    pygame.mixer.pre_init(frequency=44100)
    pygame.init()
    pygame.mixer.init(frequency=44100)

尚不清楚是否需要混合器的这两个初始化设置,但同时添加这两个设置并没有什么坏处,对我而言,它停止了崩溃。