Here's my situation. Let's say I would like to create a thread that continually prints the number 1. When a button is clicked the value should then change to 2. My issue is that I'm unsure how I change a variable in an already running thread. Here's my code:
import wx from threading import Thread import time class testThread(Thread): def __init__(self, parent): self.parent = parent Thread.__init__(self) self.start() def run(self): while 1: x = 1 print x time.sleep(1) class testGUI(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "Test", size=(500,270)) panel = wx.Panel(self, -1) self.buttonStart = wx.Button(panel, -1, label="Start thread", pos=(0,0)) self.buttonChange = wx.Button(panel, -1, label="Change var", pos=(0,30)) panel.Bind(wx.EVT_BUTTON, self.startThread, id=self.buttonStart.GetId()) panel.Bind(wx.EVT_BUTTON, self.changeVar, id=self.buttonChange.GetId()) def startThread(self, event): testThread(self) def changeVar(self, event): # DO SOMETHING HERE THAT CHANGES 'x' IN THREAD TO 2... pass if __name__ == '__main__': app = wx.App(redirect=False) frame = testGUI() frame.Show(True) app.MainLoop()
So the question is, what do I put in the function changeVar that will modify the contents of the variable x that is in the running thread? Thanks in advance!