[python-nl] time.sleep(3) en weergeven van image

Jack Jansen Jack.Jansen at cwi.nl
Sun Dec 2 00:58:34 CET 2007


Ik ben niet echt bekend met wxPython, maar in het algemeen geldt dat  
je time.sleep() moet vermijden in een GUI-programma. Alles staat dan  
stil, en uit jou uitleg lijkt het erop dat in het geval van wxPython  
onder Windows XP zelfs het opnieuw tekenen van het window niet gebeurt.

De gebruikelijke manier om iets op een later tijdstip te doen is om  
aan de GUI-eventloop te vragen of-ie je over een paar seconden een  
callback wil geven. Soms heeft dat de vorm van een event, dan zoek je  
iets in de trant van mainloop.ScheduleApplicationDefinedEvent(3), en  
wordt 3 seconden later je OnApplicationDefinedEvent() aangeroepen.  
Soms geef je ook gewoon de routine die je aangeroepen wilt hebben  
mee, dan zoek je iets als mainloop.ScheduleCalback(3,  
self.myShowNextPicture) en wordt die myShowNextPicture later  
aangeroepen. Hoe het in wxWindows werkt moet je zelf even in de  
documentatie opzoeken.

Het grote voordeel hiervan is de gedurende die 3 seconden de user  
interface nog gewoon actief is, dus als je user bijvoorbeeld "quit"  
kiest stopt het programma ook meteen.

On  1-Dec-2007, at 20:47 , Ben Ansems de Vries wrote:

> Beste mensen,
>
> Ik ben betrekkelijk nieuw in Python en leer er iedere dag bij. Door  
> kleine programmaatjes te schrijven oefen ik met deze fantastisch taal.
>
> Bij het volgende probleem kan ik wat hulp gebruiken:
>
> Doel:  Plaatje weergeven ====>  pauze 3 sec. ======> Volgende  
> plaatje weergeven
>
> Probleem: zodra invoer waar is dan staat het programma 3 sec stil  
> en daarna is alleen het tweede plaatje te zien m.a.w programma gaat  
> in sleep voordat het eerste plaatje is                  
> weergegeven . Zie  programma code.
>
> Vraag: Waar gaat het mis? Is time.sleep(sec) hiervoor wel te  
> gebruiken?
>
>
> Alvast bedankt,
>
> Ben
>
> Platform:         Windows XP Media Center Edition
> Program info:
>                     Spe version 0.8.3.c
>                     Python version 2.5.1
>                     wxPython version 2.8.6.1.
>                     wxglade Version 0.6.1
>
>
>
> #--------------- Gedeelte van de code-----------------
>
>     def OnText(self, event): # wxGlade: MyFrame1.<event_handler>
>
>         self.text_ctrl_1.SetMaxLength(1)
>         invoer = self.text_ctrl_1.GetValue()
>         letter = MyFrame1.letter
>         if invoer == letter:
>             self.label_2.SetLabel(letter)
>             self.text_ctrl_1.Hide()
>
>             #eerste plaatje weergeven
>
>             MyFrame1.Showbitmap(self,"smile.jpg")
>
>             print "Debug: plaatje is geactiveerd"
>
>             #wacht 3 seconden
>
>             time.sleep(3)
>
>             # laad het volgende plaatje
>
>             MyFrame1.Showbitmap(self,"smile_surprised.jpg")
>
>
>         elif invoer =="":
>             print "invoer leeg"
>
>         else:
>             MyFrame1.Showbitmap(self,"smile_surprised.jpg")
>             self.text_ctrl_1.SetValue("")
>
>         event.Skip()
>
>     def Showbitmap(self,bitmap):
>         i = wx.Image(bitmap,wx.BITMAP_TYPE_ANY)
>         b1 = wx.BitmapFromImage(i)
>         self.bitmap_1.SetBitmap(b1)
>         self.bitmap_1.Show()
> _______________________________________________
> Python-nl mailing list
> Python-nl op python.org
> http://mail.python.org/mailman/listinfo/python-nl

------------- volgend deel ------------
Een HTML-bijlage is verwijderd...
URL: http://mail.python.org/pipermail/python-nl/attachments/20071202/7753d1ee/attachment.htm 


More information about the Python-nl mailing list