2

pygame を使って Web ブラウザを作ろうとしています。HTMLレンダリングにPGUを使用しています。example.comなどの単純なサイトにアクセスすると問題なく動作しますが、 googleなどの html フォームを使用するより複雑なものを読み込もうとすると、次のエラーが発生します。

UnboundLocalError: local variable 'e' referenced before assignment

PGU html レンダリング ファイルを調べたところ、次のコード セグメントが見つかりました。

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 が定義されていないため、最後の行でエラーが発生しました。この理由は、入力の型をチェックして e 変数を作成する if ステートメントが何にも一致しなかったためだと推測しています。_type 変数を出力する行を追加したところ、googleappleを試したときに「hidden」になりました。タイプが「非表示」のフォーム項目を PGU でレンダリングする方法はありますか?

編集:
type_ が 'hidden' と等しいかどうかを確認するために if ステートメントにセクションを追加した場合、何を入れますか?
編集 2:
PGU では html レンダリングがあまり良くない (javascript コードも表示される) ことに気付いたので、pygame ウィンドウで html をレンダリングする他の方法があるかどうか知りたいです。

4

1 に答える 1

1

PyGame を PyQT ウィンドウに埋め込むことは可能だと思います。ただし、これはエレガントなソリューションというよりは回避策です。

于 2010-06-13T05:47:59.987 に答える