微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决这个问题? Python 从列表中的函数返回对象

如何解决如何解决这个问题? Python 从列表中的函数返回对象

我正在使用 prompt_toolkit 创建一个显示笔记的小界面。这个问题实际上与这个特定问题无关,但我在学习 python 时遇到过几次。

问题是,我有这个创建容器的函数

def create_new(hint):
    return Frame(title="%s" %  hint,body=Label("%s" % hint))
hints = ["hint1","hint2","..."]
root_container = VSplit(
    [
        HSplit(
            [
                Window(
                    content=FormattedTextControl(get_statusbar_text),height=D.exact(1),style="class:status",),#Frame(title="The custom window",body=Label("hello\ntest"),width=50),do_stuff_to_display_more_frames()
            ],]
)

代码中可以看出,我想要的是返回该函数与列表内容一样多的次数。但我所有的尝试都失败了:

[create_new(i) for i in hints]
ValueError: Not a container object: [<prompt_toolkit.widge..>,<prompt...>,<prompt>]

它也不会让我使用 for 循环:

for i in hints:
      create_new(i)

返回函数有什么办法可以正确返回所有函数

Frame (title = "hint1" ...
Frame (title = "hint2" ...

编辑 @Barmar,就是这样,但问题不在于程序,如果我把 create_new("hint1") 完美运行。

HSplit(
  File "C:\Users\Z\AppData\Local\Programs\Python\python38\lib\site-packages\prompt_toolkit\layout\containers.py",line 290,in __init__
    super().__init__(
  File "C:\Users\Z\AppData\Local\Programs\Python\python38\lib\site-packages\prompt_toolkit\layout\containers.py",line 216,in __init__
    self.children = [to_container(c) for c in children]
  File "C:\Users\Z\AppData\Local\Programs\Python\python38\lib\site-packages\prompt_toolkit\layout\containers.py",in <listcomp>
    self.children = [to_container(c) for c in children]
  File "C:\Users\Z\AppData\Local\Programs\Python\python38\lib\site-packages\prompt_toolkit\layout\containers.py",line 2678,in to_container
    raise ValueError("Not a container object: %r" % (container,))
ValueError: Not a container object: [<prompt_toolkit.widgets.base.Frame object at 0x000001A100EBA790>,<prompt_toolkit.widgets.base.Frame object at 0x000001A103356A90>,<prompt_toolkit.widgets.base.Frame object at 0x000001A103365E50>]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。