来自pyalsaaudio的gobject.io_add_watch连续回调

时间:2014-10-22 23:02:18

标签: python-2.7 pygtk alsa pygobject

我正在尝试使用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()

我出错了什么?

1 个答案:

答案 0 :(得分:0)

当您从投票描述符中获取事件时,您必须致电snd_mixer_handle_events()pyalsaaudio没有相应的机制。