2010-06-05 30 views
2

J'essaie de créer un navigateur Web en utilisant pygame. J'utilise PGU pour le rendu html. Il fonctionne très bien quand je visite des sites simples, comme example.com, mais quand je tente quelque chose charger plus complexe qui utilise un formulaire HTML, comme google, je reçois cette erreur:PGU HTML Renderer ne peut pas rendre la plupart des sites

UnboundLocalError: local variable 'e' referenced before assignment 

J'ai regardé dans le fichier de rendu html PGU et trouvé ce segment de code:

def start_input(self,attrs): 
    r = self.attrs_to_map(attrs) 
    params = self.map_to_params(r) #why bother 
    #params = {} 

    type_,name,value = r.get('type','text'),r.get('name',None),r.get('value',None) 
    f = self.form 
    if type_ == 'text': 
     e = gui.Input(**params) 
     self.map_to_connects(e,r) 
     self.item.add(e) 
    elif type_ == 'radio': 
     if name not in f.groups: 
      f.groups[name] = gui.Group(name=name) 
     g = f.groups[name] 
     del params['name'] 
     e = gui.Radio(group=g,**params) 
     self.map_to_connects(e,r) 
     self.item.add(e) 
     if 'checked' in r: g.value = value 
    elif type_ == 'checkbox': 
     if name not in f.groups: 
      f.groups[name] = gui.Group(name=name) 
     g = f.groups[name] 
     del params['name'] 
     e = gui.Checkbox(group=g,**params) 
     self.map_to_connects(e,r) 
     self.item.add(e) 
     if 'checked' in r: g.value = value 

    elif type_ == 'button': 
     e = gui.Button(**params) 
     self.map_to_connects(e,r) 
     self.item.add(e) 
    elif type_ == 'submit': 
     e = gui.Button(**params) 
     self.map_to_connects(e,r) 
     self.item.add(e) 
    elif type_ == 'file': 
     e = gui.Input(**params) 
     self.map_to_connects(e,r) 
     self.item.add(e) 
     b = gui.Button(value='Browse...') 
     self.item.add(b) 
     def _browse(value): 
      d = gui.FileDialog(); 
      d.connect(gui.CHANGE,gui.action_setvalue,(d,e)) 
      d.open(); 
     b.connect(gui.CLICK,_browse,None) 

    self._locals[r.get('id',None)] = e 

J'ai obtenu l'erreur dans la dernière ligne, car e n'était pas défini. Je suppose que la raison de ceci est que l'instruction if qui vérifie le type de l'entrée et crée la variable e ne correspond à rien. J'ai ajouté une ligne pour imprimer la variable _type et j'ai été 'caché' quand j'ai essayé google et apple. Y at-il un moyen de rendre les éléments de formulaire qui ont le type «caché» avec PGU?

Edit:
Si j'ai ajouté une section à l'instruction if pour vérifier si type_ était égal à « caché », qu'est-ce que je mettre? Je me suis rendu compte que le rendu html n'est pas très bon (il montre même du code javascript) pour PGU et donc je voudrais savoir s'il y a une autre façon de rendre html dans une fenêtre pygame.

Répondre

1

Je pense qu'il est possible d'intégrer PyGame dans une fenêtre PyQT. C'est plus un travail qu'une solution élégante.