You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KivyMD应用中调用SoundLoader.load导致程序崩溃的问题求助

KivyMD应用中调用SoundLoader.load导致程序崩溃的问题求助

我最近在开发KivyMD应用时碰到了一个棘手的问题:当我在App类的初始化方法里用Kivy的SoundLoader加载音频文件时,程序启动后直接崩溃——窗口完全透明,根本关不掉,还没有任何错误提示。不过我单独写了个Python脚本测试SoundLoader的话,虽然声音没播放出来,但程序至少能正常运行,不会崩溃。

我的运行环境是:Ubuntu 24.04.2 LTS,Python 3.12.3,Kivy版本2.3.1。

崩溃的KivyMD示例代码:

from kivy.lang import Builder
from kivymd.app import MDApp
import os
from kivy.core.audio import SoundLoader

KV = '''
MDScreen:
    md_bg_color: self.theme_cls.backgroundColor

    MDLabel:
        text: "test"
        halign: "center"
'''

class MyApp(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.sound = SoundLoader.load(os.path.abspath("alarm_sound.wav"))

    def build(self):
            self.theme_cls.theme_style = "Dark"
            self.theme_cls.primary_palette = "Olive"
            return Builder.load_string(KV)

MyApp().run()

能正常运行(但无声音)的单独测试脚本:

from kivy.core.audio import SoundLoader

sound = SoundLoader.load('alarm_sound.wav')
if sound:
    print("Sound found at %s" % sound.source)
    print("Sound is %.3f seconds" % sound.length)
    sound.play()

编辑补充:
后来我发现问题似乎和KivyMD有关!换成普通的Kivy应用,在同样的位置(__init__方法里)调用SoundLoader.load就完全正常,不会出现崩溃的情况。

正常运行的普通Kivy应用示例:

from kivy.lang import Builder
from kivy.app import App
import os
from kivy.core.audio import SoundLoader

KV = '''
Screen:
    Label:
        text: "test"
        halign: "center"
'''

class MyApp(App):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.sound = SoundLoader.load(os.path.abspath("alarm_sound.wav"))

    def build(self):
        return Builder.load_string(KV)

MyApp().run()

备注:内容来源于stack exchange,提问作者iamklager

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:57:58