wxpython 2.7.8의 wx.DataViewCtrl을 사용하여 데이터를 나열하고 있습니다. wx.DataViewCtrl : GetSelections()를 사용하여 목록에서 선택한 항목을 처음 클릭 할 수 있습니다. 닫기 버튼을 클릭하여 상자를 닫은 후에 다시 메뉴를 클릭하여이 상자를 열려고합니다. 하지만 wx.DataViewCtrl : GetSelections()를 사용하여 삭제/수정하도록 선택한 항목을 가져 오지 못했습니다. wx.DataViewCtrl : GetSelections()는 빈 목록을 반환합니다. 그러나 여전히 데이터 목록을 표시하는 wx.DataViewCtrl 상자.wx.DataViewCtrl에서 선택한 항목을 가져올 수 없습니다.
도와주세요. 지난 이틀 동안이 문제에 시달렸습니다. 미리 감사드립니다.
class MainFrame(wx.Dialog):
def __init__(self, parent, title, data):
self.data = data
wx.Dialog.__init__(self, parent, title=title, size=(800, 400))
self.panel = wx.Panel(self)
self.model = UpdateModel(self.data)
def createEntityTable(self, editor_ctrl):
self.__editor_ctrl = editor_ctrl.getEditor()
self.dvc = dv.DataViewCtrl(self.panel,
style=wx.BORDER_THEME
| dv.DV_ROW_LINES # nice alternating bg colors
#| dv.DV_HORIZ_RULES
| dv.DV_VERT_RULES
| dv.DV_MULTIPLE, size = (600, 400)
)
self.dvc.AssociateModel(self.model)
self.dvc.AppendTextColumn("Name", 0, width=170, mode=dv.DATAVIEW_CELL_EDITABLE)
self.dvc.AppendTextColumn("DTD", 1, width=80, mode=dv.DATAVIEW_CELL_EDITABLE)
self.dvc.AppendTextColumn("File name", 2, width=80, mode=dv.DATAVIEW_CELL_EDITABLE)
self.dvc.AppendTextColumn("Public Id", 3, width=80, mode=dv.DATAVIEW_CELL_EDITABLE)
self.dvc.AppendTextColumn("Notation", 4, width=80, mode=dv.DATAVIEW_CELL_EDITABLE)
for c in self.dvc.Columns:
c.Sortable = True
c.Reorderable = True
self.new = wx.Button(self.panel, -1, "New")
self.Bind(wx.EVT_BUTTON, self.OnAddRow, self.new)
self.modify = wx.Button(self.panel, -1, "Modify")
self.Bind(wx.EVT_BUTTON, self.onModifyRow, self.modify)
self.delete = wx.Button(self.panel, -1, "Delete")
self.Bind(wx.EVT_BUTTON, self.OnDeleteRows, self.delete)
self.close = wx.Button(self.panel, -1, "Close")
self.Bind(wx.EVT_BUTTON, self.OnClosePanel, self.close)
dvcSizer = wx.BoxSizer(wx.HORIZONTAL)
dvcSizer.Add(self.dvc, 1, wx.EXPAND)
btnbox = wx.BoxSizer(wx.VERTICAL)
btnbox.Add(self.new, 0, wx.LEFT|wx.RIGHT, 5)
btnbox.Add(self.modify, 0, wx.LEFT|wx.RIGHT, 5)
btnbox.Add(self.delete, 0, wx.LEFT|wx.RIGHT, 5)
btnbox.Add(self.close, 0, wx.LEFT|wx.RIGHT, 5)
dvcSizer.Add(btnbox, 0, wx.TOP|wx.BOTTOM, 5)
self.panel.SetSizer(dvcSizer)
self.ShowModal()
def OnDeleteRows(self, evt):
items = self.dvc.GetSelections()
rows = [self.model.GetRow(item) for item in items]
self.model.DeleteRows(rows)