Ich versuche zu lernen, objectListView in WxPython zu verwenden. Beim Ausführen des Beispiels von Mouse vs.Python. Ich sehe, dass Sie eine Zelle bearbeiten können, aber sobald das Programm geschlossen ist, wird die Änderung nicht gespeichert. Ich habe die Dokumentation von readthedocs für 2 Tage angesehen und ich konnte es nicht funktionieren lassen. Wie erlaubst du eine Bearbeitung und speicherst sie?wxPython objectListView Änderungen speichern
Gibt es Weg, um die Zeilen aus einer CSV-Datei zu erstellen und die Bearbeitung die CSV-Datei zu aktualisieren?
I WxPython Phoenix 3.0.3 und Python 2.7
Hier bin mit meinem Starter-Code:
class Book(object):
def __init__(self, cue, sendTo, red, green, blue, time):
self.cue = cue
self.sendTo = sendTo
self.red = red
self.green = green
self.blue = blue
self.time = time
class MainFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent=None, id=wx.ID_ANY,
title="ObjectListView", size=(800,600))
panel = wx.Panel(self, -1)
#Need to get this information from *.txt file
self.cues = [Book("cue 1", "NodeA",
"193", "123", "123","0"),
Book("cue 2", "Group 1",
"193", "123", "123","0")
]
self.cuesOlv = ObjectListView(panel, wx.ID_ANY, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
self.setCues()
self.cuesOlv.cellEditMode = ObjectListView.CELLEDIT_SINGLECLICK
mainSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(self.cuesOlv, 1, wx.ALL|wx.EXPAND, 5)
#mainSizer.Add(self.updateBtn, 0, wx.ALL|wx.CENTER, 5)
panel.SetSizer(mainSizer)
def setCues(self, data=None):
self.cuesOlv.SetColumns([
ColumnDefn("Cue", "center", 100, "cue"),
ColumnDefn("Send To:", "center", 100, "sendTo"),
ColumnDefn("Red", "center", 100, "red"),
ColumnDefn("Green", "center", 100, "green"),
ColumnDefn("Blue", "center", 100, "blue"),
ColumnDefn("Time", "center", 100, "time")
])
self.cuesOlv.SetObjects(self.cues)
Mein Ziel ist es, damit der Benutzer einen Wert in jeder Spalte ändern. In der Dokumentation zum Bearbeiten von Zellenwerten sehe ich, dass der erste Schritt das cellEditMode-Attribut setzt. Der nächste Schritt ist, sich für einen Zelleneditor zu entscheiden, und das ist der Punkt, an dem ich verwirrt bin. Wenn ich möchte, dass der Benutzer in der Lage ist, eine beliebige Zelle zu bearbeiten, sollte ich den spaltenbasierten, ereignisbasierten oder den registerbasierten Editor verwenden? Wo kommen 'Getting' und 'Setting' rein? Kann ich GetValue und SetValue verwenden, ohne einen Zelleditor zu erstellen? Dann muss das Model-Objekt aktualisiert werden; kann das nur durch Verlassen der Zelle geschehen oder muss etwas Aktives stattfinden wie das Binden einer Funktion an einen Knopf?
Aus den Beispielen, die Mike Driscoll bietet, sehe ich, wie er die Liste aktualisiert, aber die Änderungen werden nicht gespeichert. Sobald die GUI geschlossen ist, gehen die Änderungen verloren. Wie speichern Sie die Änderungen?