Я пытаюсь создать небольшой пользовательский микшер, который подходит для моих потребностей, используя python 2.7 и pyalsaaudio 0.7, но я застрял в событиях, полученных от alsamixer, когда другая программа меняет значения громкости. Я попытался понять, как работают другие микшеры (например, volti), и, насколько я понимаю, он должен работать так, как ожидалось, но даже если метод схож, я все равно получаю непрерывный цикл ответа на событие от io_add_watch. Итак, я полагаю, что я не понимаю, как работает io_add_watch.gobject.io_add_watch непрерывный обратный вызов от pyalsaaudio
Это небольшая версия кода:
class MyMixer(gtk.Window):
def __init__(self):
super(MyMixer, self).__init__()
self.m = alsaaudio.Mixer(control='Headphone', id=1, cardindex=0)
""" here go the mixer widgets """
self.show_all()
fd, event = self.m.polldescriptors()[0]
self.watch = gobject.io_add_watch(fd, event, self.update)
def update(self, *args):
print 'changed'
""" here I update mixer widgets """
return True
mixer = MyMixer()
gtk.main()
Что я получаю неправильно?
Я нашел патч, представленный для этого, но, если я правильно понимаю, он просто позволяет мне обрабатывать определенные события, что не является моей проблемой: моя проблема в том, что после изменения значения в микшере я получаю непрерывные события, а я не знаю, как «остановить» его. Я все еще начинающий питон, и, возможно, я, возможно, не понял, как работает опрос. – musicamante
Вы получаете непрерывные события, потому что события не обрабатываются. –
Хорошо, я посмотрю, смогу ли я исправить этот патч, спасибо. – musicamante