Thanks for response. Solution great worked like adream (only needed def _makeBig( ) I'd wondered how callAfterInterval worked !
Iain On 26/11/10 13:38, Ed Leafe wrote: > On Nov 26, 2010, at 8:31 AM, Iain Simpson wrote: > >> I have a map image displayed. >> If the user clicks a button the image will be zoomed by accessing more >> detailed 'tiles' - if these are not held locally I need to go to the >> internet to obtain and save them (create_big). This may take some time. >> To cater for this I want to display a low resolution image (lfile) which >> is stored locally. >> >> How can I ensure that the image is updated immediately so the user sees >> and a change ? > > I've noticed that wxPython tries to be 'smart' about some things, and > doesn't always repaint when you want it to. The general solution is to break up the processing by inserting a small interval of time; the dabo.ui.callAfterInterval() method works well in this case. Modifying your code, it would look something like: > > ------------------------------------------------------- > def onHit(self, evt): > (lDef,lFile)=zoom_in(1,self.Form.dImap.Map_def) > lZ=lDef[0]; lX=lDef[1]; lY=lDef[2] > self.Form.dImap.Map_def=(lZ,lX,lY) > # redisplay with new image > self.Form.dImap.Picture=lFile # Temporary image > self.refresh() > dabo.ui.callAfterInterval(50, self._makeBig, lZ, lX, lY) > > def makeBig(self, lZ, lX, lY): > if create_big((lZ,lX,lY)): > # hi-res image > self.Form.dImap.Picture='bigone.png' > # if hi-res not available - keep low res visible > ----------------------------------------------------- > > You may need to adjust the interval from 50 msec to a longer one, but > 50 is generally a good start. Let me know how this works for you. > > > > > > -- Ed Leafe > > > > _______________________________________________ Post Messages to: [email protected] Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users Searchable Archives: http://leafe.com/archives/search/dabo-users This message: http://leafe.com/archives/byMID/[email protected]
