habe ein Problem mit folgendem Code:
Code: Alles auswählen
#!/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
import sys
class AuswahlDialog(wx.Dialog):
def __init__(self, parent, spalten, daten):
self.daten = daten
wx.Dialog.__init__(self,parent,-1)
self.Text = wx.StaticText(self,-1,"Auswahl",wx.Point(10,10))
self.list=wx.ListCtrl(self,-1,wx.Point(10,50),wx.Size(200,100),wx.LC_REPORT
| wx.BORDER_NONE
| wx.LC_EDIT_LABELS
| wx.LC_SORT_ASCENDING )
for i in range(len(spalten)):
self.list.InsertColumn(i,spalten[i])
for i in range(len(daten)):
index = self.list.InsertStringItem(sys.maxint,"")
self.list.SetStringItem(index, 0, str(daten[i][0]))
self.list.SetStringItem(index, 1, daten[i][1])
self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated, self.list)
self.ShowModal()
def OnItemActivated(self,event):
self.currentItem = event.m_itemIndex
self.artikel = self.daten[self.currentItem]
self.Fit()
def GetReturn(self):
return self.artikel
def main():
app = wx.PySimpleApp()
daten = ((1,'Haus'),(2,'Garten'),(3,'Baum'))
spalten = ('Nummer','Teil')
diag = AuswahlDialog(None,spalten,daten)
print diag.GetReturn()
app.MainLoop()
if __name__ == "__main__":
main()
Bei Ausführung des obigen Codes werden die Items aber immer in umgekehrter Reihenfolge eingefügt, und die Verbindung liefert z.B. statt dem 1. Wert den letzten Wert.
Das Problem liegt in Codezeile 21, wenn man das 2. Argument nicht leer lässt sondern einen String einfügt, wir die Reihenfolge richtig angezeigt.
Fragt sich nur ob das so richtig ist, und ob es nicht eine bessere Möglichkeit gibt?
Der Code ist wahrscheinlich total primitiv, aber ist halt erst der Anfang und ein Versuch aus Beispielen ans Ziel zu kommen. Für Verbesserungen bin ich immer offen.
Gruß Christian