Создан один пользовательский wx.frame для размещения окна разделителя с двумя элементами управления сеткой внутри. Он используется для сравнения данных в каждой сетке. В этот момент полоса прокрутки двух сеток должна поддерживать синхронизацию.Как синхронизировать полосы прокрутки двух сеток в wx
Вопросы:
- Как получить событие прокрутки этих двух GRID в? Я попытался выровнять событие wx.EVT_SCROLL в кадре, но не удалось. Я также пытаюсь связать событие прокрутки в настраиваемом элементе управления сеткой, это тоже не удалось.
- Как синхронизировать прокрутку полосы прокрутки двух сеток? Ответ родственника question, упомянутый для использования gridInstance.Scroll (строка, 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
Клиент, что это ... так, это нужно. Столбец данных будет сравниваться как winmerge и добавить столбец фиктивной строки, чтобы совместить одинаковые столбцы. – Erxin
Все остальные функции реализованы, за исключением синхронизации, прокручивая полосы прокрутки двух сетки. Это кажется общей проблемой, уже [кто-то спросил] (http://stackoverflow.com/questions/11269558/wxgrid-detecting-scroll-event), как обнаружить событие прокрутки. Я мог только узнать, как связать событие колеса мыши из окна сетки. – Erxin