PGU HTML Renderer не может отображать большинство сайтов - PullRequest
2 голосов
/ 06 июня 2010

Я пытаюсь сделать веб-браузер, используя pygame. Я использую PGU для рендеринга HTML. Он отлично работает, когда я посещаю простые сайты, например example.com , но когда я пытаюсь загрузить что-то более сложное, использующее html-форму, например google , я получаю эту ошибку:

UnboundLocalError: local variable 'e' referenced before assignment

Я посмотрел в HTML-файле рендеринга PGU и нашел этот фрагмент кода:

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

Я получил ошибку в последней строке, потому что e не было определено. Я предполагаю, что причина этого в том, что оператор if, который проверяет тип ввода и создает переменную e, ничего не соответствует. Я добавил строку, чтобы напечатать переменную _type, и стал «скрытым», когда попробовал google и apple . Есть ли способ визуализации элементов формы типа «скрытый» с помощью PGU?

Edit:
Если бы я добавил раздел в оператор if, чтобы проверить, равен ли type_ значению «скрытый», что бы я добавил в него?
Редактировать 2:
Я понял, что рендеринг html не очень хорош (он даже показывает код javascript) для PGU, и поэтому я хотел бы знать, есть ли какой-либо другой способ рендеринга html в окне pygame.

1 Ответ

1 голос
/ 13 июня 2010

Я думаю, что можно встроить PyGame в окно PyQT. Это скорее обходной путь, чем элегантное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...