2012-04-08 6 views
-1

Ich möchte jedes Element in meiner Liste auf einer anderen Zeile in demselben Textfeld in EasyGUI gedruckt haben. Wie kodiere ich dafür?Gleiche TextBox in EasyGUI

EDIT: Sorry, ich war ein bisschen vage. Lass mich das weiter erklären. Ich habe eine Liste namens Kombinationen. Es hat 50-100 Einträge. Wenn ich die Ausgabe versuchen, es in einem Textfeld wie folgt aus:

eg.textbox(combinations) 

Er druckt es in einer Art von Absatz format.Like dies:

Artikel, Artikel, Artikel, Artikel, Artikel, Artikel usw.

ich möchte es eher wie eine Liste drucken, mit einem Element pro Zeile, wie folgt aus:

Artikel,

Artikel,

Artikel,

Artikel,

Wie kann ich Code für diese?

+0

Was haben Sie bisher? – George

+0

@George Nun, ich habe eine Liste namens Kombinationen. Es hat 50-100 Einträge. Wenn ich versuche, die Liste (in einem Textfeld) zu drucken, druckt sie sie in einem riesigen Textblock in einem Textfeld. Ich möchte, dass jeder Eintrag in der Liste in separaten Zeilen steht. Ich bin auf dieses hier gestoßen, ich habe nichts. –

+0

@HershS .: Er bedeutet, dass Sie Ihre Frage mit der Beschreibung aktualisieren sollten, die Sie angegeben haben, und Sie sollten den entsprechenden Code auch veröffentlichen. –

Antwort

1

Ich denke, Ihr Problem kann sein, dass Ihre Liste zu tief ist. Gemäß der Dokumentation nimmt das Textfeld als Eingabe entweder eine Zeichenfolge oder eine Liste von Zeichenfolgen. Sie übergeben es eine Liste von Strings. Wenn Sie die Daten reduzieren, funktioniert es möglicherweise.

Versuchen Sie folgendes:

>>>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'] 
>>> 

UPDATE

ich EasyGUI heruntergeladen und bestätigt, dass dies in der Tat ist, Ihr Problem. Alles, was Sie jetzt tun müssen, ist, an jedes Element in Ihrer abgeflachten Liste eine neue Zeile anzuhängen.

>>>flat_list = ['Ww', 'Aa', 'Bb', 'Cc'] 
>>>with_newlines = '\n'.join(flat_list) 
>>>with_newlines 
'Ww\nAa\nBb\nCc\n' 
>>>eg.textbox(with_newlines) 
+1

-1 Dies macht einfache Dinge kompliziert. Tun Sie einfach: ''\ n' '.beitreten (flat_list) '. [Markieren Sie dies] (http://stackoverflow.com/questions/10058621/easygui-output/10058987#comment12873551_10058987) – joaquin

+0

@joaquin: Guter Punkt: bearbeitet. –

+0

überprüfen Sie auch [dies] (http://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python). – joaquin