【问题标题】:How to stop the Fatal Python error: PyEval_SaveThread: NULL tstate如何停止致命的 Python 错误:PyEval_SaveThread: NULL tstate
【发布时间】:2019-09-25 09:55:00
【问题描述】:

当我在 Pygame 中插入声音并使用它时,它会退出,并显示以下错误:Fatal Python error: PyEval_SaveThread: NULL tstate, I want to fix it....

我在带有 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()

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

【问题讨论】:

    标签: python audio pygame fatal-error


    【解决方案1】:

    试试这个代码:

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

    并在此处查看文档:https://www.pygame.org/docs/ref/music.html

    【讨论】:

      【解决方案2】:

      这可能是 SDL 错误的根本原因,但根据我的经验,可以通过显式设置混频器的频率来解决它。默认情况下,在pygame 1中,mixer频率设置为22050;在 pygame 2 中它被设置为 44100。在 pygame 1 中将它设置为 44100 阻止了这个崩溃发生在我身上:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-18
        • 2022-10-14
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 1970-01-01
        • 2017-08-15
        • 1970-01-01
        相关资源
        最近更新 更多