2016-08-15 18 views
0

wxPythonグリッドで一括してデータを編集する方法を探しています。範囲を選択してデータを入力してShift +入る。wxpythonグリッド:複数セル編集(ala Excel)

class MyGrid(gridlib.Grid): 
    def __init__(self, panel): 
     gridlib.Grid.__init__(self, panel) 
     self.Bind(gridlib.EVT_GRID_CELL_CHANGE, self.onEditCell) 
     self.Bind(gridlib.EVT_GRID_RANGE_SELECT, self.onSelection) 

    def onSelection(self, event): 
     if self.GetSelectionBlockTopLeft() == []: 
      self.selected_row_number = 0 
      self.selected_col_number = 0 
     else: 
      self.selected_row_number = self.GetSelectionBlockBottomRight()[0][0] - self.GetSelectionBlockTopLeft()[0][0] + 1 
      self.selected_col_number = self.GetSelectionBlockBottomRight()[0][1] - self.GetSelectionBlockTopLeft()[0][1] + 1 
     print self.selected_row_number, self.selected_col_number 

    def onEditCell(self,event): 
     print self.selected_row_number, self.selected_col_number 

問題がonEditCellイベントは以前の選択を上書きすることのようだ:これは私のグリッドの簡易版です。だから私は例えばグリッドの4×4ブロック、onSelectionは4 4を出力します。しかし、入力を開始してEnterキーを押すと、onEditCellは編集中のセルだけが選択されたかのように0,0を出力します。どのように多くの細胞が選択されているかの「記憶」を維持するにはどうすればよいですか?自分の質問に答える

答えて

0

、ありがとう:

def onSelection(self, event): 
    self.previous_selected_row_number = self.selected_row_number 
    self.previous_selected_col_number = self.selected_col_number 
    if self.GetSelectionBlockTopLeft() == []: 
     self.selected_row_number = 0 
     self.selected_col_number = 0 
    else: 
     self.selected_row_number = self.GetSelectionBlockBottomRight()[0][0] - self.GetSelectionBlockTopLeft()[0][0] + 1 
     self.selected_col_number = self.GetSelectionBlockBottomRight()[0][1] - self.GetSelectionBlockTopLeft()[0][1] + 1 
    print self.selected_row_number, self.selected_col_number 
    print self.previous_selected_row_number, self.previous_selected_col_number 



def onEditCell(self,event): 
    print self.previous_selected_row_number, self.previous_selected_col_number 

誰もがより良い方法を考えることができる場合:私は、それは物事を行うには正しい方法のようには思えない醜いハックで動作するように取得することができます...

関連する問題