【发布时间】:2016-08-28 10:57:51
【问题描述】:
我有 Qt Gui 类处理所有变量(p1,p2)调整滑块和东西。在这个类中,我有一个 OSC 监听器类,它应该监听来自另一个设备的触发信号和一个变量p3,并使用这些参数来触发声音和图形。但我无法在侦听器类中访问p1、p2。这是一个例子:
class Ptsgui(QtGui.QMainWindow):
def __init__(self):
super(Ptsgui, self).__init__()
self.p1, self.p2, self.data = 0, 0, np.zeros(10)
self.initUI()
class OscListener(object):
def __init__(self, data):
self.listenerData = data
self.receive_address = '127.0.0.1', 7000
def do_stuff_listener(self, addr, tags, stuff, source):
print self.p1
print self.p2
self.p3 = stuff[0]
trigger_sound_and_graphic(self.p1, self.p2, self.p3)
def spawn(self):
self.receiveServer = OSC.OSCServer(self.receive_address)
self.receiveServer.addDefaultHandlers()
self.receiveServer.addMsgHandler("/trigger", self.do_stuff_listener()
self.emorating_oscServer = threading.Thread(target=self.receiveServer.serve_forever)
self.emorating_oscServer.start()
def initUI():
"""
Some sliders setup for change the p1 & p2
"""
self.setGeometry(50, 50, 1050, 650)
mainlayout = QtGui.QVBoxLayout()
self.widget = QtGui.QWidget()
self.widget.setLayout(mainlayout)
self.listener = OscListener(data = self.data)
self.show()
所以在这里我希望oscListener() 可以直接访问self.p1 和self.p2。显然我不能这样做,因为self.p1 的“自我”指的是OscListener,而不是Ptsgui。 do_stuff_listener 也在单独的线程中,是否仍然可以访问 self.p1 和 self.p2?
最终,我希望用户能够通过 GUI 来控制参数值。并且每次通过OSC接收到一个触发信号,都会产生一个新的图形和声音。请告知是否有更好的方法来做到这一点。
【问题讨论】:
标签: python class pyqt subclass osc