I have Qt Gui
class that handles all the variables (p1
, p2
) adjustment with sliders and stuff. Inside this class, I have a OSC listener class that was supposed to listen to trigger signals and a variable p3
from another device and use the parameters to trigger sound and graphic. But I have trouble accessing p1
, p2
in the listener class. Here is an example:
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()
So here I want the oscListener()
to be available to directly access self.p1
and self.p2
. And obviously I can't with this because the self.p1
's 'self' refers to OscListener
but not Ptsgui
. Also the do_stuff_listener
is in a separate thread, is it still possible to access self.p1
and self.p2
?
Ultimately, I am hoping to the GUI for user to control the parameters values. And each time a trigger signal is received via OSC
, it will generated a new graph and sound. Please advice if there is a better way to do this.