2017-03-29 20 views
0

非常に大きなグリッドを持つwxPython GUIがあります。 wxPythonデモの例(GridHugeTable.py)に同様のコードを使用しています。つまり、PyGridTableBaseを使用して仮想グリッドを作成しています。wxPython仮想グリッドに列を追加できません

ただし、このグリッドに対話的に列を追加しようとすると問題が発生しています。

wx._core.PyAssertionError: C++ assertion "Assert failure" failed at /Users/vagrant/pisi-64bit/tmp/wxPython-3.0.2.0-3/work/wxPython-src-3.0.2.0/src/generic/grid.cpp(1129) in AppendCols(): 
Called grid table class function AppendCols but your derived table class does not override this function 

しかし、私は私のテーブルクラスでAppendColsを上書きしようとした場合、アプリケーションは単に無期限にハングアップして解決したことがない:このエラーでAppendCols(1)結果を呼び出す

。それは私が成功した他の方法を上書きすることができました

class HugeTable(gridlib.PyGridTableBase): 

    """                            
    Table class for virtual grid                      
    """ 

    def __init__(self, log, num_rows, num_cols): 
     gridlib.PyGridTableBase.__init__(self) 

    def AppendCols(self, *args): 
     pass 

...実際にすべての私のカスタムAppendCols方法で何もない場合でもハング、(setValueの、のgetValue、getColLabelValue、など)ので、私は」ここでは何が違うのか分かりません。

更新:

私は離れてしばらくした後、この問題に戻りました。私はもはやwx.__core.PyAssertionErrorを取得しません。しかし、私はまだカスタムAppendColsメソッドを動作させることができません。 AppendColsに何を入れて新しい列を作るのか分かりません実際にはが現れます。

ソースコードをどのように調べるかわかりません - Pythonのドキュメントの中には何も探していないものがありますので、wxWidgetsを掘り下げる必要がありますか?このドキュメントは役に立ちませんでした:https://wiki.wxpython.org/wxPyGridTableBase

答えて

0

必要な手がかりは、custom tableのデモコードにあります。

ので、このコードは(私のカスタムロジックを除外し、単に裸の骨を含む)作品:

def AppendCols(self, *args): 
    msg = gridlib.GridTableMessage(self, # The table            
          gridlib.GRIDTABLE_NOTIFY_COLS_APPENDED, # what we did to it    
          1)          # how many      
    self.GetView().ProcessTableMessage(msg) 
    return True 
関連する問題