SoundLoader.load аварийно завершает работу в Kivy kvPython

Программы на Python
Ответить
Anonymous
 SoundLoader.load аварийно завершает работу в Kivy kv

Сообщение Anonymous »

Kivy SoundLoader.load() аварийно завершает работу (блокируется), если я использую KV для создания пользовательского интерфейса, но работает нормально, когда я добавляю виджеты в код. В чем причина? И как это решить?
Код, сведенный к методу загрузки, который все блокирует. Я удалил игровую часть для простоты, чтобы показать проблему здесь.
Это не работает:
my.kv:

Код: Выделить всё

#:kivy 1.0.9

MyButton:
text: "MyButton"
my.py

Код: Выделить всё

from kivy.app import App
from kivy.uix.button import Button
from kivy.core.audio import SoundLoader

class MyButton(Button): pass

class MyApp(App):
sound = None

def build(self):
self.sound = SoundLoader.load('music.mp3')
return super().build()

if __name__ == '__main__':
MyApp().run()
Но это работает:
my.py:

Код: Выделить всё

from kivy.app import App
from kivy.uix.button import Button
from kivy.core.audio import SoundLoader

class MyApp(App):
sound = None

def build(self):
self.sound = SoundLoader.load('music.mp3')
button = Button(text='Play Audio')
return button

if __name__ == '__main__':
MyApp().run()
Я также проследил, где останавливается SoundLoader.load(). Soundloader.load() выполняет итерацию Soundloader._classes как classobj (здесь: SoundAvplayer) и вызывает соответствующий метод Extensions(), чтобы получить список разрешенных расширений файлов. И именно здесь внутри SoundAvPlayer.extensions() программа останавливается. Хотя он должен возвращать только простой список (или кортеж) строк.
Также НЕТ улучшений:
  • Запланируйте событие часов для вызова Soundloader.load()
  • Вызов SoundLoader.load() вне класса App, например в классе MyButton.
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/798 ... in-kivy-kv
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»