1

我正在使用 Brython.js 我可以在 HTML 浏览器中打印一个循环,但正如您所看到的,这是将输出添加到整个 DOM。

如何将打印结果附加到特定的 DOM 元素中?例如,如果我想将输出打印到#map中,我该怎么做?

    <ul id="maps"></ul>
    <script type="text/python">
        from browser import document
        import sys
        sys.stdout = document
        maps= ["world", "asia", "africa"]
        for x in maps:
         print(x)
     </script>
4

1 回答 1

0

您可以将自定义类的实例分配给sys.stdout. 你只需要重写write 方法。例如:

from browser import document
import sys

class CustomStdout:
    def write(self, txt):
        document['maps'].html += f'<li>{txt}</li>'


sys.stdout = CustomStdout()

maps = ["world", "asia", "africa"]

for x in maps:
    print(x)

但以下会更简单:

from browser import document
from browser.html import LI

maps_ul = document['maps']
maps = ["world", "asia", "africa"]

for x in maps:
    maps_ul <= LI(x)

<=操作符,作为 type 的操作数,DOMElement就像appendChild在 brython 中一样。

于 2021-05-10T09:23:31.813 回答