創建一個自定義wx.frame以包含內部具有兩個網格控件的分離器窗口。它用於比較每個網格中的數據。此時兩個網格的滾動條需要支持同步滾動。如何同步wx中兩個網格的滾動條
問題:
- 如何獲得這兩個網格的滾動事件?我試圖在框架中裝入wx.EVT_SCROLL事件,但失敗了。我也嘗試綁定自定義網格控件中的滾動事件,但它也失敗了。
- 如何同步滾動兩個網格的滾動條?一個相對question的回答使用gridInstance.Scroll(row,col)來滾動網格客戶端窗口。但它不包含如何同步滾動條。
非常感謝您的任何建議。
定製幀
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, title='', size=(640,480))
main_panel = wx.Panel(self, -1)
self.TBFLAGS = (wx.TB_HORIZONTAL| wx.NO_BORDER| wx.TB_FLAT)
self.controller = None
self.isSyncScroll = True
#hsizer = wx.BoxSizer(wx.VERTICAL)
gsizer = wx.FlexGridSizer(rows = 1,
cols = 1,
vgap = 2,
hgap = 2)
gsizer.AddGrowableRow(0)
gsizer.AddGrowableCol(0)
self.tb = self.init_toolbar()
(sub_panel0, sub_panel1) = self.init_splitter(main_panel)
self.grid0 = self.init_grid(sub_panel0)
self.grid1 = self.init_grid(sub_panel1)
self.init_status_bar()
gsizer.Add(main_panel, 1, wx.EXPAND)
self.SetSizer(gsizer)
ico = wx.Icon(u'Compare.ico', wx.BITMAP_TYPE_ICO)
self.SetIcon(ico)
self.Maximize()
#can't catch the scroll event at the frame
self.Bind(wx.EVT_SCROLL, self.OnScroll, self.grid0)
#self.Bind(wx.EVT_SCROLL, self.OnScroll)
#self.Bind(wx.EVT_SCROLL, self.OnScroll, id=self.grid0.GetId())
爲什麼不把所有的數據並排放在同一個網格中? – Arthur 2013-04-08 09:16:53
客戶是什麼......所以,它必須。數據列將會像winmerge一樣比較,並添加虛擬列來匹配相等的列。 – Erxin 2013-04-09 01:13:05
除了同步滾動兩個網格的滾動條以外,還實現了所有其他功能。這似乎是一個常見問題,已經有人[問](http://stackoverflow.com/questions/11269558/wxgrid-detecting-scroll-event)如何檢測滾動事件。我只能找出如何綁定網格窗口中的鼠標滾輪事件。 – Erxin 2013-04-09 01:17:54