Seite 1 von 1
Liste darstellen
Verfasst: Dienstag 19. Juni 2007, 13:40
von Nils83
Moin!
Ich würde gerne eine Liste
x = [1, 555, 100.000, 1234]
in einem Textfeld darstellen.
Code: Alles auswählen
...
self.control = wx.TextCtrl(self, 1, style=wx.TE_MULTILINE)
...
self.control.SetValue(x)
Führt jedoch zu folgendem Fehler:
line 1708, in SetValue
return _controls_.TextCtrl_SetValue(*args, **kwargs)
TypeError: String or Unicode type required
Gibt es evtl noch was anderes als SetValue oder kann mir jemand sagen wie ich die Liste geschickt in einen String oder ähnliches umwandle?
Besten Dank
Re: Liste darstellen
Verfasst: Dienstag 19. Juni 2007, 13:51
von gerold
Nils83 hat geschrieben:Ich würde gerne eine Liste
x = [1, 555, 100.000, 1234] in einem Textfeld darstellen.
Hallo Nils83!
Oder hast du es anders gemeint?
oder
mfg
Gerold
Verfasst: Dienstag 19. Juni 2007, 13:58
von Nils83
Moin!
genauso hab ich sowas gesucht! Hätte nicht gedacht, dass es so einfach geht.
Vielen Dank
Verfasst: Dienstag 19. Juni 2007, 15:17
von Nils83
Eine Frage noch:
Wie kriege ich einen Zeilenumbruch in den übergegeben Text?
Sollte das nicht eigentlich mit \r\n gehen?
Gruß
Nils
Verfasst: Dienstag 19. Juni 2007, 15:36
von gerold
Nils83 hat geschrieben:Wie kriege ich einen Zeilenumbruch in den übergegeben Text? Sollte das nicht eigentlich mit \r\n gehen?
Hallo Nils!
Nein. In Python verwendet man "\n" (ohne \r). Außerdem musst du dein TextCtrl auf "Multiline" umschalten.
Code: Alles auswählen
my_textctrl = wx.TextCtrl(panel, style = wx.TE_MULTILINE | wx.TE_DONTWRAP)
-->
http://wxwidgets.org/manuals/stable/wx_wxtextctrl.html
mfg
Gerold
Verfasst: Dienstag 19. Juni 2007, 15:37
von DER Olf
Hallo Nils83,
es gibt auf den unterschiedlichen betriebsysteme unterschiedliche steuerzeichen für zeilenumbrüche.
Unix --> \n
Windows --> \r\n
OS 9 --> \r (bin mir nicht sicher!)
OS X --> \n (wie Unix)
mit \n sollte man immer weit kommen
grüße
Verfasst: Dienstag 19. Juni 2007, 15:57
von Nils83
Danke!
Wenn \n in einem String enhalten ist und angezeigt wird, sollte doch auch automatisch der Zeilenumbruch dargstellt werden oder?
Verfasst: Mittwoch 20. Juni 2007, 07:52
von DER Olf
in einem Textfeld welcher Sorte?
manche Toolkits (wxPythons Klassenhierarchie ist mir jetzt nicht bekannt) unterscheiden zwischen einzeiligen und mehrzeiligen Eingabefeldern.
In der Doku hab ich gefunden:
- du verwendest wxText
- verwenden musst du wxMultiText
grüße, lk
Verfasst: Mittwoch 20. Juni 2007, 13:44
von Nils83
Danke!
Verfasst: Mittwoch 20. Juni 2007, 13:47
von Nils83
Gibt es was einfaches, um eine dictionary in eine Liste umzuwandeln oder mach ich das am besten über eine Schleife?
Verfasst: Mittwoch 20. Juni 2007, 14:14
von gerold
Nils83 hat geschrieben:Gibt es was einfaches, um eine dictionary in eine Liste umzuwandeln
Hallo Nils!
Code: Alles auswählen
>>> d = {"vorname": "Martin", "nachname": "Haller"}
>>> d.keys()
['nachname', 'vorname']
>>> d.values()
['Haller', 'Martin']
>>> d.items()
[('nachname', 'Haller'), ('vorname', 'Martin')]
>>>
mfg
Gerold
Verfasst: Mittwoch 20. Juni 2007, 16:28
von Nils83
das tut schon mal wunderbar
danke
Wenn ich ein dictionary mit:
Code: Alles auswählen
d = {"1": "Martin", "2": "Hans", "3": "Klaus", "4": "Heinz", "5": "Werner"}
und eine Liste mit [3, 2, 4, 1, 5] hab.
Wie könnte ich dann die Keys im Dictionary so sortieren, dass sie die Reihenfolge der Liste haben?
geht das vielleicht irgendwie mit sort()
bwz. wo kann ich sowas am besten nachgucken?
Vielen Dank für eure Hilfe
Verfasst: Mittwoch 20. Juni 2007, 16:52
von gerold
Nils83 hat geschrieben:Wie könnte ich dann die Keys im Dictionary so sortieren, dass sie die Reihenfolge der Liste haben?
Hallo Nils!
Ein Dictionary lässt sich nicht sortieren. Es ist immer unsortiert. Wenn du eine Reihenfolge brauchst, dann verwende eine Liste zur Reihenfolgenbestimmung.
Code: Alles auswählen
>>> d = {1: "Martin", 2: "Hans", 3: "Klaus", 4: "Heinz", 5: "Werner"}
>>> my_list = [3, 2, 4, 1, 5]
>>> for key in my_list:
... print key, d[key]
...
3 Klaus
2 Hans
4 Heinz
1 Martin
5 Werner
>>>
mfg
Gerold
Edit: Liste umbenannt
Verfasst: Mittwoch 20. Juni 2007, 17:29
von Nils83
Ok, danke
Wie mache ich sowas schöner?
Code: Alles auswählen
y =[]
for key in l:
y[:0] = d[key]
print key, d[key]
y.reverse()
Das reverse kann ich mir ja schenken, wenn ich die Sachen jeweils am Ende der Liste einfüge oder? (Ist das Ende bei y[:-19]?
Verfasst: Mittwoch 20. Juni 2007, 17:43
von veers
for key in 1? O_o
Verfasst: Mittwoch 20. Juni 2007, 18:13
von Nils83
Bezieht sich auf das Beispiel drüber