[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