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!
ListCrtl - ItemEdit abfangen
Wenn ich Dich richtig verstehe.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!
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?
Hallo Francesco,
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:
Womöglich geht es ja anders?
Das meinte ich auch so. Erst nach Bestätigung der Editierung soll das Kürzel durch den Orginalnamen ersetzt werden.Was ist, wenn Du EVT_LIST_END_LABEL_EDIT Event bindest?
Aber wie meinst du das mit SetItemState und wx.CallAfter?
Ich habe folgendes innerhalb der von EVT_LIST_END_LABEL_EDIT aufgerufenene Funktion versucht:
Code: Alles auswählen
wx.CallAfter(self.list.SetItemText(item, text))
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
Gruß, Harry
Hallo Harry,HarryH hat geschrieben:Hallo Francesco,
Das meinte ich auch so. Erst nach Bestätigung der Editierung soll das Kürzel durch den Orginalnamen ersetzt werden.Was ist, wenn Du EVT_LIST_END_LABEL_EDIT Event bindest?
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
wx.CallAfter(self.list.SetItemText(item, text))
Womöglich geht es ja anders?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
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)
Hallo Francesco,
Juhu! Es geht.
Ich hatte wx.CallAfter() falsch aufgerufen.
Mit
funktioniert es.
Vielen Dank!
Juhu! Es geht.

Ich hatte wx.CallAfter() falsch aufgerufen.
Mit
Code: Alles auswählen
wx.CallAfter(self.list.SetItemText, item, text)
Vielen Dank!
Gruß, Harry
Toll, freut michHarryH hat geschrieben:Hallo Francesco,
Juhu! Es geht.![]()
Ich hatte wx.CallAfter() falsch aufgerufen.
Mitfunktioniert es.Code: Alles auswählen
wx.CallAfter(self.list.SetItemText, item, text)
Vielen Dank!
