I have a question about queues. I am creating a GUI with wxpython, and in the program I need to do something in a separate thread. After the thread finished, I have to modify the gui. The GUI should not block while the other thread is running. For this I thougt about queues and wrote something like this:
def do_something(gui):
# Here it normally does something
gui.queue.put(gui.new)
class GuiFrame(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, title="Test")
self.queue = Queue.Queue()
self.calculate()
def calculate(self):
thread = threading.Thread(target=do_something, args=(self,))
thread.start()
function = self.queue.get()
function()
def new():
# Here something modifies the gui
pass
But the problem is now, that the program still blocks, I think because the queue is waiting for an item. I could start it in a new thread, but then I have to do the thing with the queue again, to execute the function in my main thread. Can anybody help me? Thank you in advance.