[gelöst] Flash-Player spielt mal ab, mal nicht

Plattformunabhängige GUIs mit wxWidgets.
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

[gelöst] Flash-Player spielt mal ab, mal nicht

Beitragvon snakeseven » Mittwoch 19. Dezember 2007, 20:31

Hallo,
ich habe mal wieder ein Problem mit dem integrierten Flash-Player von wxPython. Kommentiere ich main() aus und starte die .swf Files direkt bei Programmstart, dann spielt er sie ab. Soll das Ganze aber zeitgesteuert über main() laufen, dann spielt der Player die Movies nur manchmal ab.

Das Problem tritt auch mit anderen Playern auf, z.B. MySpace Playern. Manche läde er sich, andere nicht. Bei Programmstart spielt er sie aber alle ab, auch die, die er vorher verschmäht hat. Hat einer ne Idee, woran das liegen könnte ?

Grüße, Seven


Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import wx,urllib2
from threading import Timer
from time import sleep
from random import randint
from wx.lib.flashwin import FlashWindow

wx.SetDefaultPyEncoding("UTF-8")

class FlashFrame(wx.Frame):
    def __init__(self, parent = None, id = -1, title = "Flash Player", size = wx.Size(350, 320)):
        wx.Frame.__init__(self, parent, id, title, size = size)
        panel = wx.Panel(self)
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox_main)
        self.flash = FlashWindow(panel, style = wx.SUNKEN_BORDER)
        vbox_main.Add(self.flash, 1, wx.ALL | wx.EXPAND)
        self.Show()
       
       
class HandlePlay:
    def __init__(self):
        self.count = 15
        self.playid = 0
       
        self.movies = [
            'http://www.crazyprofile.com/clocks/swf/Christmas.swf',
            'http://www.crazyprofile.com/clocks/swf/Jessica_Alba02.swf',
            'http://www.messe-ideen.de/upload/magische-zauberkugel.swf'
            ]
       
    def counter(self):
        # alle 15 Sekunden ein neues .swf File
        if self.count == 15:
            self.count = 0
            self.play()
            self.playid = ((self.playid + 1) % 3)
        else:
            self.count += 1
        t = Timer(1, self.counter); t.start()
       
    def play(self):
        FF.flash.LoadMovie(0, self.movies[self.playid])
       
       
       
def main():
    HP.counter()
   
if __name__ == '__main__':
    app = wx.PySimpleApp()
    FF = FlashFrame()
    HP = HandlePlay()
    #FF.flash.LoadMovie(0, HP.movies[randint(0,2)])
    main()
    app.MainLoop()
Zuletzt geändert von snakeseven am Mittwoch 19. Dezember 2007, 21:39, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Flash-Player spielt mal ab, mal nicht

Beitragvon gerold » Mittwoch 19. Dezember 2007, 21:08

snakeseven hat geschrieben:Soll das Ganze aber zeitgesteuert über main() laufen, dann spielt der Player die Movies nur manchmal ab.

Hallo snake!

Probier mal in Zeile 38, statt ``self.play()`` das hier aus:

Code: Alles auswählen

wx.CallAfter(self.play, (, ))

Bringt das eine Änderung?

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Mittwoch 19. Dezember 2007, 21:39

Ja Gerold,
das ist tatsächlich die Lösung!

Großer Dank! Ich hätte mich wahrscheinlich über Stunden wund gesucht.
Werde mal nachlesen, was wx.CallAfter() genau macht. Du setzt es ja in diversen Beispielen hier im Forum beim Threading ein.

Schönen Abend noch!
Seven

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder