2
我正在嘗試使用pygame製作網頁瀏覽器。我正在使用PGU進行html渲染。它工作正常,當我訪問簡單的網站,如example.com,但是當我嘗試加載任何使用HTML表單,像google更復雜,我得到這個錯誤:PGU 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變量,當我嘗試google和apple時,我得到了「隱藏」。有沒有辦法呈現PGU類型爲「隱藏」的表單項?
編輯:
如果我加入一個部分if語句來檢查,如果type_等於「隱藏」,我會放什麼呢?
編輯2:
我已經意識到,html渲染是不是很好(它甚至顯示JavaScript代碼)的PGU,所以我想知道是否有任何其他方式在pygame窗口中呈現html。