2013-01-08 29 views
0

我試圖通過在更改表數據後調用grid.ForceRefresh()來更新wx.grid.PyGridTableBase。但是,行數不會刷新,所以表仍然顯示原始(更新前)行數。我能做些什麼來完全更新網格?wx.grid不更新行數

+0

如果你可以創建你的代碼的一個非常小的可運行示例這表明在儘可能少的線路儘可能它會問題更容易幫助。 – Fenikso

回答

1

您可能忘記通知網格您所做的更改。你可以找到在wxPython的演示一個例子,也可以直接閱讀本舊線的題目

https://groups.google.com/forum/?fromgroups=#!msg/wxpython-users/z4iobAKq0os/zzUL70WzL_AJ

它說:

msg = wx.grid.GridTableMessage(self,   # The table 
     wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, # what we did to it 
     1          # how many 
    ) 

msg = wx.grid.GridTableMessage(self,   # The table 
     wx.grid.GRIDTABLE_NOTIFY_ROWS_INSERTED, # what we did to it 
     5,          # from which row 
     1          # how many 
    ) 

msg = wx.grid.GridTableMessage(self,   # The table 
     wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, # what we did to it 
     5,          # from which row 
     1          # how many 
    ) 

其次

self.GetView().ProcessTableMessage(msg) 

您也可以在wxPython的維基閱讀一下:http://wiki.wxpython.org/wxGrid

+0

我認爲就是這樣。我沒有調用任何這些方法。由於我沒有跟蹤改變的內容,有沒有一種說法「改變了一些」(添加行,刪除行,更改內容)並且完全刷新? – orange

+0

我不確定數據如何變化。如果它在後端發生變化,那麼你只需要使用wx.Timer來檢查某種類型或刷新。如果用戶已經更新了網格本身,那麼您應該可以通過EVT_GRID_CELL_CHANGE –

+0

來檢測它,通過某些用戶交互進行更改。假設表格顯示目錄的文件,並且用戶選擇了不同的目錄。可能有更多的文件,更少的文件,不同的文件名等,我不一定知道發生了什麼變化。有沒有辦法說整個網格數據是無效的,所以表格是完全清爽的? – orange