带pydom的xul menulist bug

2024-09-28 23:17:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道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

出现异常,show me XPCOM组件“”没有属性selectedIndex

我想在menulist中获取use select值

我也累了,但同样的例外

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

你知道吗? 谢谢


Tags: idvalueisodocumentlabelutfprintmenuitem
2条回答

你的第一个问题是你想要的标签名是“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的方法。我只是想说明你需要小心你要找的标签名。你知道吗

selectedIndex属性是通过XBL实现的,我不知道pydom是否可以与XBL通信。您能调用QueryInterface来公开nsIDOMXULMenuListElement接口吗?你知道吗

相关问题 更多 >