xul menulist ошибка с пидом - PullRequest
0 голосов
/ 01 мая 2011

я знаю, что pydom устарел. Но мое приложение уже использовало это, это так просто

мой xul такой.

<menulist name="mailencode" id="mailencode">
     <menupopup id="mailencodepop">
      <menuitem label="UTF-8" value="UTF-8" selected="true"/>
      <menuitem label="ISO-8859-1" value="ISO-8859-1" />
     </menupopup>
    </menulist>

в моем скрипте Python

ecd=document.getElementById("mailencode")
print  ecd.selectedIndex

есть исключение, покажите мне, что у компонента XPCOM '' нет атрибута selectedIndex

я хочу получить значение use select в menulist

Я тоже устал, но то же исключение

ecd=document.getElementById("mailencodepop")
print  ecd.selectedIndex

есть идеи? спасибо

Ответы [ 2 ]

0 голосов
/ 12 мая 2011

Атрибут selectedIndex реализован через XBL, и я не знаю, может ли pydom общаться с XBL. Можете ли вы позвонить QueryInterface, чтобы открыть интерфейс nsIDOMXULMenuListElement?

0 голосов
/ 02 мая 2011

Ваша первая проблема заключается в том, что имя тега, за которым вы следите, является "menulist". Я использовал xml.dom.minidom, чтобы разобрать это просто как основной пример, чтобы проиллюстрировать, потому что я никогда не использовал PyDOM:

>>> ecd = document.getElementsByTagName('menulist')
[<DOM Element: menulist at 0x1006e2710>]
>>> ecd[0].tagName
u'menulist'
>>> ecd[0].attributes.items()
[(u'name', u'mailencode'), (u'id', u'mailencode')]

Затем вытащите тег menulist самостоятельно и затем осмотрите его дочерние узлы:

>>> menulist = ecd[0]
>>> menulist.childNodes
[<DOM Text node "u'\n     '">, <DOM Element: menupopup at 0x1006e29e0>, <DOM Text node "u'\n    '">]

А затем проверьте дочерние узлы тега menupop:

>>> menulist.childNodes[1]
<DOM Element: menupopup at 0x1006e29e0>
>>> menulist.childNodes[1].childNodes
[<DOM Text node "u'\n      '">, <DOM Element: menuitem at 0x1006e2b90>, <DOM Text node "u'\n      '">, <DOM Element: menuitem at 0x1006e2ef0>, <DOM Text node "u'\n     '">]

Возможно, есть лучший способ, особенно тот, который использует PyDOM. Я просто хотел проиллюстрировать, что вы должны быть осторожны с именами тегов, которые вы ищете.

...