Seite 1 von 1
ListCrtl - ItemEdit abfangen
Verfasst: Montag 2. Mai 2005, 12:49
von HarryH
Hallo,
Ich habe ein wxListCtrl in dem der User das Item editieren kann (mit wxLC_EDIT_LABELS erzeugt).
Wenn nun der User ein Item editiert und die Eingabe einer von in einem Dictionary definierten Abkürzung entspricht, so soll diese Abkürzung zum Orginal erweitert werden.
Beispiel:
Der User gibt bei der Editierung des Items die Abkürung "usw." ein, dann soll diese intern zu "und so weiter" erweitert werden. Das Item würde also nach der Editierung den Namen "und so weiter" besitzen.
Wie kann ich das bewerkstelligen?
Wenn ich während der Editierung eines Items, dieses mit "SetItemText" überschreibe, passiert nichts.
Vielleicht hat jemand eine Idee?
Danke!
Re: ListCrtl - ItemEdit abfangen
Verfasst: Montag 2. Mai 2005, 14:54
von Francesco
HarryH hat geschrieben:Hallo,
Ich habe ein wxListCtrl in dem der User das Item editieren kann (mit wxLC_EDIT_LABELS erzeugt).
Wenn nun der User ein Item editiert und die Eingabe einer von in einem Dictionary definierten Abkürzung entspricht, so soll diese Abkürzung zum Orginal erweitert werden.
Beispiel:
Der User gibt bei der Editierung des Items die Abkürung "usw." ein, dann soll diese intern zu "und so weiter" erweitert werden. Das Item würde also nach der Editierung den Namen "und so weiter" besitzen.
Wie kann ich das bewerkstelligen?
Wenn ich während der Editierung eines Items, dieses mit "SetItemText" überschreibe, passiert nichts.
Vielleicht hat jemand eine Idee?
Danke!
Wenn ich Dich richtig verstehe.
Du willst usw. eintippen und gleich nach dem lezten Zeichen "." sollte
der Itemtext auf "und so weiter" umgewandelt werden?
Das wird, glaube ich, nicht (so leicht) gehen.
Was ist, wenn Du EVT_LIST_END_LABEL_EDIT Event bindest?
und hier dann SetItemState oder wx.CallAfter (SetItemState, ..)
aufrufst?
Verfasst: Dienstag 3. Mai 2005, 06:54
von HarryH
Hallo Francesco,
Was ist, wenn Du EVT_LIST_END_LABEL_EDIT Event bindest?
Das meinte ich auch so. Erst nach Bestätigung der Editierung soll das Kürzel durch den Orginalnamen ersetzt werden.
Aber wie meinst du das mit SetItemState und wx.CallAfter?
Ich habe folgendes innerhalb der von EVT_LIST_END_LABEL_EDIT aufgerufenene Funktion versucht:
Hat aber nicht funktioniert. Folgender Fehler trat auf:
Code: Alles auswählen
Traceback (most recent call last):
File "D:\Python\Lib\site-packages\wx-2.6-msw-ansi\wx\_core.py", line 11917, in <lambda>
lambda event: event.callable(*event.args, **event.kw) )
TypeError: 'NoneType' object is not callable
Womöglich geht es ja anders?
Verfasst: Dienstag 3. Mai 2005, 08:24
von Francesco
HarryH hat geschrieben:Hallo Francesco,
Was ist, wenn Du EVT_LIST_END_LABEL_EDIT Event bindest?
Das meinte ich auch so. Erst nach Bestätigung der Editierung soll das Kürzel durch den Orginalnamen ersetzt werden.
Aber wie meinst du das mit SetItemState und wx.CallAfter?
Ich habe folgendes innerhalb der von EVT_LIST_END_LABEL_EDIT aufgerufenene Funktion versucht:
Hat aber nicht funktioniert. Folgender Fehler trat auf:
Code: Alles auswählen
Traceback (most recent call last):
File "D:\Python\Lib\site-packages\wx-2.6-msw-ansi\wx\_core.py", line 11917, in <lambda>
lambda event: event.callable(*event.args, **event.kw) )
TypeError: 'NoneType' object is not callable
Womöglich geht es ja anders?
Hallo Harry,
leider bin ich auch kein Experte, das wäre eine Frage für Robin
Dunn oder andere Spezialisten in der wxpython-user mailing list.
Kannst Du auch über gmane direkt mit einem Newsreader abbonieren.
(news.gmane.org) gmane.comp.python.wxpython.
Für wx.CallAfter gilt: (funktion, para1, para2, ...)
also
wx.CallAfter (self.list.SetItemText, item, text)
re:
Verfasst: Dienstag 3. Mai 2005, 08:39
von HarryH
Hallo Francesco,
Juhu! Es geht.
Ich hatte wx.CallAfter() falsch aufgerufen.
Mit
funktioniert es.
Vielen Dank!
Re: re:
Verfasst: Dienstag 3. Mai 2005, 09:38
von Francesco
HarryH hat geschrieben:Hallo Francesco,
Juhu! Es geht.
Ich hatte wx.CallAfter() falsch aufgerufen.
Mit
funktioniert es.
Vielen Dank!
Toll, freut mich
