Grid Control anpassen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Korea-2003
User
Beiträge: 25
Registriert: Mittwoch 23. April 2008, 13:47

Hi,

ich hab auf meinem Formular ein Grid Control.
Nun habe ich zwei Fragen dazu.
1. Wie kann ich in der letzten Spalte in jede Zelle eine Checkbox einbauen?
2. Wie muss ich tun damit, wenn ich eine Celle der vorletzten Spalte anklicke, dann ein Event anspringt?

MfG :)
Korea-2003
User
Beiträge: 25
Registriert: Mittwoch 23. April 2008, 13:47

Also das Checkbox Problem hab ich ganz einfach mit den Spaltenattributen gelöst.

Code: Alles auswählen

attr = wx.grid.GridCellAttr()
        
attr.SetEditor(wx.grid.GridCellBoolEditor())
attr.SetRenderer(wx.grid.GridCellBoolRenderer())

self.grid.SetColAttr(4, attr)
Nun bleibt aber immernoch die Frage offen, wie kann ich eine Spalte mit einem Event versehen. Ganz genau: In den Zellen der Spalte stehen Pfade mit Dateinamen. Wenn ich nun eine dieser Zellen anklicke, soll das File geöffnet werden. Ist das überhaupt möglich und wenn ja, wie?

MfG :)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Korea-2003 hat geschrieben:wie kann ich eine Spalte mit einem Event versehen. Ganz genau: In den Zellen der Spalte stehen Pfade mit Dateinamen. Wenn ich nun eine dieser Zellen anklicke, soll das File geöffnet werden.
Hallo Korea!

Hier http://docs.wxwidgets.org/stable/wx_wxgrid.html stehen die Events drinnen, die du nutzen kannst. Vielleicht kannst du mit EVT_GRID_EDITOR_SHOWN etwas anfangen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Korea-2003
User
Beiträge: 25
Registriert: Mittwoch 23. April 2008, 13:47

Danke Gerold,

ich habs jetzt mit EVT_GRID_CELL_LEFT_DCLICK gelöst.

Code: Alles auswählen

    self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnLeftDClick, self.grid)

def OnLeftDClick(self, evt):
    col = self.grid.GetGridCursorCol()
    row = self.grid.GetGridCursorRow()
    if col == 3:
        path = self.grid.GetCellValue(row, col)
        if not path == "" or path == None:
            os.startfile(path)
Kann ich bei os.startfile() irgendwie angeben, dass er das File, welches in der Zelle steht mit einem Template öffnet (zB. Wordvorlage)?


MfG :)
Antworten