Hoi Jack,

Bedankt voor het meedenken. Van Frank Niessink kreeg ik de volgende tip:
 
Hoi Ben,

Op 01-12-07 heeft Ben Ansems de Vries<[EMAIL PROTECTED]> het
volgende geschreven:

  
>  Vraag: Waar gaat het mis? Is time.sleep(sec) hiervoor wel te gebruiken?
    

Nee, dat is niet handig. wxPython heeft namelijk een event loop en als
je time.sleep gebruikt kan je programma gedurende die tijd geen events
afhandelen. Je kunt beter het tonen van het volgende plaatje in een
aparte methode stoppen en die dan met wx.FutureCall aanroepen. Of, een
wx.Timer maken die die methode om de paar seconden aanroept.

(Zie de demo en documentatie, bijv.
http://wxwidgets.org/manuals/stable/wx_wxtimer.html#wxtimer)

Succes, Frank


  
Ik heb het nu op gelost met wx..FutureCall.

Groet Ben

Jack Jansen schreef:
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 mailing list
Python-nl@python.org
http://mail.python.org/mailman/listinfo/python-nl

Antwoord per e-mail aan