【问题标题】:xul menulist bug with pydompydom 的 xul menulist 错误
【发布时间】:2011-05-01 19:00:11
【问题描述】:

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

我想在菜单列表中获取使用选择值

我也厌倦了这个,但同样的例外

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

有什么想法吗? 谢谢

【问题讨论】:

    标签: python xul


    【解决方案1】:

    您的第一个问题是您所使用的标签名称是“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 的方法。我只是想说明你需要小心你所追求的标签名称。

    【讨论】:

      【解决方案2】:

      selectedIndex属性是通过XBL实现的,不知道pydom能不能和XBL对话。可以调用QueryInterface暴露nsIDOMXULMenuListElement接口吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多