Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python EasyGUI中的相同文本框_Python_List_Textbox_Lines_Easygui - Fatal编程技术网

Python EasyGUI中的相同文本框

Python EasyGUI中的相同文本框,python,list,textbox,lines,easygui,Python,List,Textbox,Lines,Easygui,我希望在EasyGUI的同一文本框中的不同行上打印列表中的每个项目。我该如何为此编写代码 编辑:对不起,我有点含糊不清。让我进一步解释。我有一个叫做组合的列表。它有50-100个条目。当我尝试在如下文本框中输出它时: eg.textbox(combinations) 它以一种段落格式打印。如下所示: 项目,项目,项目,项目,项目,项目,项目等 我想把它打印成一个列表,每行一个项目,如下所示: eg.textbox(combinations) 项目, 项目, 项目, 项目, 我该如何为此编写代

我希望在EasyGUI的同一文本框中的不同行上打印列表中的每个项目。我该如何为此编写代码

编辑:对不起,我有点含糊不清。让我进一步解释。我有一个叫做组合的列表。它有50-100个条目。当我尝试在如下文本框中输出它时:

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()
将整个列表转换为一个字符串,每个元素之间有换行符,或者只需向列表中的每个字符串添加一个换行符,并将整个列表作为参数传递。