创建一个自定义 wx.frame 以包含一个拆分器窗口,其中包含两个网格控件。它用于比较每个网格中的数据。此时两个网格的滚动条需要支持同步滚动。
问题:
- 如何获取这两个网格的滚动事件?我试图在框架上绑定 wx.EVT_SCROLL 事件但失败了。我也尝试在自定义网格控件中绑定滚动事件,它也失败了。
- 如何同步滚动两个网格的滚动条?提到使用 gridInstance.Scroll(row, col) 滚动网格客户端窗口的相关问题的答案。但它不包含如何同步滚动条。
非常感谢您的任何建议。
自定义框架的init方法
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())