Hi I'm not sure if this is the right place to post, pardon me if it's not. I'm having a problem with an application written with wxpython. The frame seems only to refresh when moving my mouse of it, though i frequently call: frame.Refresh(True). In fact, that line is called by another thread, right after having modified some of the frames attributes.
here are some snippets of code : class MyFrame(wx.Frame): def __init__(self, *args, **kwds): self.queue=Queue.Queue(0) # begin wxGlade: MyFrame.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) iconFile = "gnobots2.xpm" icon1 = wx.Icon(iconFile, wx.BITMAP_TYPE_XPM) self.SetIcon(icon1) self.panel_1 = wx.Panel(self, -1) self.panel_1.Bind(wx.EVT_PAINT, self.on_paint) self.static_line_1 = wx.StaticLine(self, -1) self.text_ctrl_1 = wx.TextCtrl(self, -1, "",style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_WORDWRAP) self.__set_properties() self.__do_layout() # end wxGlade def __set_properties(self): # begin wxGlade: MyFrame.__set_properties self.SetTitle("Simulation") self.SetSize((600, 400)) self.static_line_1.SetBackgroundColour(wx.Colour(0, 0, 0)) self.text_ctrl_1.SetMinSize((600, 100)) # end wxGlade self.blues = [] def __do_layout(self): # begin wxGlade: MyFrame.__do_layout sizer_1 = wx.BoxSizer(wx.VERTICAL) sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0) sizer_1.Add(self.static_line_1, 0, wx.EXPAND, 0) sizer_1.Add(self.text_ctrl_1, 0, wx.ADJUST_MINSIZE, 0) self.SetAutoLayout(True) self.SetSizer(sizer_1) self.Layout() # end wxGlade def on_paint(self, event): dim = self.panel_1.GetSize() dc = wx.PaintDC(self.panel_1) total_types = len(Parameters.DEMANDERS_NUMBERS) large = dim[1] / (total_types + 3) long = dim[0] / Parameters.NUMBER_OF_BLUES - 1 for type in range(total_types): counter = long for blue in self.blues: green = (int(blue.biais[type])) * 20 red = - green if red<0: red=0 if green<0: green=0 color = wx.Colour(red, green, 75) dc.SetPen(wx.Pen(color,long)) dc.DrawLine(counter,50 + (type * (20 + large)),counter, 50 + large + (ty pe * (20 + large))) counter += long while(not self.queue.empty()): self.text_ctrl_1.AppendText(str(self.queue.get()) + "\n") # end of class MyFrame class MyApp( wx.App): def OnInit(self): self.text = "" self.frame = MyFrame(None , -1, 'Frame Window Demo') self.frame.Show(True) self.SetTopWindow(self.frame) return True #this is called by an external thread def paint(self, blues): self.frame.blues = blues self.frame.Refresh(True) I don't know if that is enough information, feel free to ask for more. -- http://mail.python.org/mailman/listinfo/python-list