我正在尝试使用python 2.7和pyalsaaudio 0.7来创建一个适合我需要的小型自定义调音台,但是当其他程序更改音量值时,我仍然坚持使用alsamixer获取的事件。我试着理解其他混音器是如何工作的(例如volti),据我所知,它应该按预期工作,但即使方法类似,我仍然可以从io_add_watch获得连续的事件响应循环。所以,我想我不明白io_add_watch的工作方式。
这是代码的小版本:
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()
我出错了什么?
答案 0 :(得分:0)
当您从投票描述符中获取事件时,您必须致电snd_mixer_handle_events()
。
pyalsaaudio
没有相应的机制。