Ciao, innanzi tutto scusate il titolo, ma non sapevo come riassumere meglio il mio problema. In sostanza in un mio script (ambiente windows) ho un frame in cui, quando viene schiacciato un bottone, viene eseguita un'elaborazione molto lunga alla fine della quale viene mostrato un nuovo frame contenente i dati elaborati. Siccome non voglio che l'elaborazione blocchi la mia interfaccia ho pensato di creare un thread che la eseguisse, in modo tale che l'utente possa eventualmente bloccarla. Il fatto è che alla fine del thread il frame contenente i nuovi dati non si vede. Vi posto un pò di codice d'esempio che schematizza il mio problema.

import wx, threading
from time import sleep

class MainFrame(wx.Frame):
   def __init__(self, parent, id, title):
       wx.Frame.__init__(self, parent, id, '', size=(100,100))
       self.b1 = wx.Button(self, -1, 'Start', pos=(0,0))
       self.status = wx.StaticText(self, -1, '', pos=(0,100))

       self.Bind(wx.EVT_BUTTON, self.OnStart, self.b1)

   def OnStart(self, event) :
       s = threading.Thread(target=self.CreateNewFrame)
       s.start()

   def CreateNewFrame(self) :
       #ciclo for che simula l'elaborazione
       for i in range(10) :
           print i
           sleep(1)
       frm = SecondFrame(self,-1,"")
       frm.Show(True)

class SecondFrame(wx.Frame):
   def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(200, 50))
       wx.StaticText(self,-1,"Sono mostrato alla fine del thread")

class MyApp(wx.App):
   def OnInit(self):
       frame = MainFrame(None, -1, '')
       frame.Show(True)
       return True

app = MyApp(0)
app.MainLoop()

Probabilmente ciò che accade è perfettamente ovvio, ma io non capisco come mai succeda. In tal caso qualcuno ha da suggerire qualche soluzione alternativa?
Grazie mille,
Massi

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a