Python EasyGUI中的相同文本框
我希望在EasyGUI的同一文本框中的不同行上打印列表中的每个项目。我该如何为此编写代码 编辑:对不起,我有点含糊不清。让我进一步解释。我有一个叫做组合的列表。它有50-100个条目。当我尝试在如下文本框中输出它时:Python EasyGUI中的相同文本框,python,list,textbox,lines,easygui,Python,List,Textbox,Lines,Easygui,我希望在EasyGUI的同一文本框中的不同行上打印列表中的每个项目。我该如何为此编写代码 编辑:对不起,我有点含糊不清。让我进一步解释。我有一个叫做组合的列表。它有50-100个条目。当我尝试在如下文本框中输出它时: eg.textbox(combinations) 它以一种段落格式打印。如下所示: 项目,项目,项目,项目,项目,项目,项目等 我想把它打印成一个列表,每行一个项目,如下所示: eg.textbox(combinations) 项目, 项目, 项目, 项目, 我该如何为此编写代
eg.textbox(combinations)
它以一种段落格式打印。如下所示:
项目,项目,项目,项目,项目,项目,项目等
我想把它打印成一个列表,每行一个项目,如下所示:
eg.textbox(combinations)
项目,
项目,
项目,
项目,
我该如何为此编写代码 我想你的问题可能是你的单子太深了。根据文档,文本框接受字符串或字符串列表作为输入。您正在向其传递字符串列表。如果将数据展平,它可能会起作用 试试这个:
>>>l = [[["Ww"],["Aa"],["Bb"],["Cc"]]]
>>>
>>> def flatten(sList,eList = None):
... if not eList: eList = []
... for item in sList:
... if type(item) == list:
... eList = flatten(item, eList)
... else:
... eList.append(item)
... return eList
...
>>> flatten(l)
['Ww', 'Aa', 'Bb', 'Cc']
>>>
更新
我下载了EasyGUI并确认这实际上是您的问题。您现在需要做的就是为展开列表中的每个项目添加一个换行符
>>>flat_list = ['Ww', 'Aa', 'Bb', 'Cc']
>>>with_newlines = '\n'.join(flat_list)
>>>with_newlines
'Ww\nAa\nBb\nCc\n'
>>>eg.textbox(with_newlines)
到目前为止你有什么?@George嗯,我有一个叫做组合的列表。它有50-100个条目。当我尝试打印列表(在文本框中)时,它会在一个文本框中打印一个大的文本块。我想要的是将列表中的每一项放在单独的行中。我在这一点上被难住了,我什么都没有。@HershS.:他的意思是你应该用你给出的描述更新你的问题,你也应该发布相关的代码。@HershS。你有没有试着在列表中的项目后面添加换行符?@Joel这可能有用…我该怎么做?-1这让简单的事情变得复杂。只需执行:
“\n”。加入(平面列表)
。华金:我在写答案的时候确实读过。真的,我只是想向OP解释为什么他的代码不起作用。我写上面的代码是为了压平(可能)不规则的任意深度列表。我不知道为什么我的答案值得投否决票。@JoelCornett:虽然你的答案有点不尽如人意(即破坏了列表的结构),但没有什么是不能补救的。你看,我需要第二维度来完成这个程序。但是,我可以将最终列表中的每四个条目连接在一起,然后将\n附加到其中,以将它们保持在一起(这就是子列表的用途--organization)。@HershS:啊,我明白了。您可能希望将要在一行中显示的部分转换为文本。您可以通过对对象调用repr
来完成此操作repr([['Aa'],['Bb']])
将输出字符串“[['Aa'],['Bb']]”
。对你想在一行中的每一项都这样做。显然,Easygui文本框允许您使用一个字符串或一个列表(字符串),这样您就可以执行'\n'.join()
将整个列表转换为一个字符串,每个元素之间有换行符,或者只需向列表中的每个字符串添加一个换行符,并将整个列表作为参数传递。