2009-05-20 5 views
1

Ertragen Sie mit mir, ich habe wxPython für einen ganzen Tag verwendet.wxPython: wie Paste in einer Rasterzelle implementieren?

Kurze Version ist, einen Verweis auf ein Raster gegeben.PyGridCellEditor und eine Zeichenfolge, wie kann ich eine Einfügefunktion implementieren?

Dies ist im Hauptteil eines großen Blocks von vorhandenem Code, der versucht, ganze Zeilen in einem Rasterwidget einzufügen. Dieser Block ist der Spezialfall, bei dem das Zellenbearbeitungssteuerelement sichtbar ist und nur eine einfache Textzeichenfolge vorhanden ist die Zwischenablage. Ich kann die ganze Zelle durch das ersetzen, was in der Zwischenablage ist, aber ich möchte bona fide einfügen - entweder den Text am Einfüge-Cursor einfügen oder den ausgewählten Text ersetzen.

Der Code-Block Ich habe wie folgt aussieht etwas:

def paste(self): 
    clipboard = <get contents from the clipboard> 
    .... 
    if self.IsCellEditControlShown: 
     # just do a normal paste here 
     celleditor = self.GetCellEditor(row,col) 
     <what goes here?> 

Antwort

3

ich meine eigene Frage, da sonst niemand beantwortet haben an der Platte verstärkt. Die Lösung geht in etwa so:

if self.isCellEditControlShown: 
    # _active_row and _active_col are set in the event handler... 
    cellEditor = self.GetCellEditor(self._active_row, self._active_col) 
    textControl = cellEditor.GetControl() 
    textControl.Paste() 

, dass gerade nicht meine ursprüngliche Frage beantworten, die einen String in einer Variablen enthalten ist, aber in meinem Fall der Zeichenfolge aus der Zwischenablage kamen an erster Stelle. Wenn ich wirklich eine beliebige Zeichenfolge einfügen wollte, kann ich sie einfach in die Zwischenablage stellen, bevor ich Paste()

anrufe