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
相关产品推荐
相关产品推荐

