我正在尝试学习在 wxPython 中使用 objectListView。从Mouse vs.Python运行示例时。我看到您可以编辑一个单元格,但是一旦程序关闭,编辑就不会保存。我已经盯着readthedocs的文档看了2 天,但我一直无法让它工作。您如何允许编辑并保存它?
是否可以从 CSV 文件构建行并让编辑更新 CSV 文件?
我正在使用 wxPython Phoenix 3.0.3 和 Python 2.7
这是我的入门代码:
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)
我的目标是允许用户更改任何列中的值。在有关编辑单元格值的文档中,我看到第一步是设置 cellEditMode 属性。下一步是决定一个单元格编辑器,这就是我感到困惑的地方。如果我希望用户能够编辑任何单元格,我应该使用基于列、基于事件还是基于注册表的编辑器?“获取”和“设置”从何而来?我可以在不创建单元格编辑器的情况下使用 GetValue 和 SetValue 吗?然后必须更新模型对象;这可以通过离开单元格来完成,还是必须进行一些活动,例如将功能绑定到按钮?
从 Mike Driscoll 提供的示例中,我看到他如何更新列表,但未保存更改。GUI 关闭后,更改将丢失。如何保存更改?