하나의 사용자 정의 wx.frame이 만들어져 두 개의 격자 컨트롤이있는 분할 윈도우가 포함됩니다. 각 그리드의 데이터를 비교하는 데 사용됩니다. 이 시점에서 두 개의 그리드 스크롤바는 동기화 스크롤을 지원해야합니다.wx에서 두 격자의 스크롤 막대를 동기화하는 방법
질문 :
- 방법이 두 그리드의 스크롤 이벤트를 얻으려면? 프레임에서 wx.EVT_SCROLL 이벤트를 보관하려고했지만 실패했습니다. 또한 사용자 정의 그리드 컨트롤에서 스크롤 이벤트를 바인드하려고 시도했지만 실패했습니다.
- 두 격자의 스크롤 막대를 동기화하는 방법은 무엇입니까? grid 클라이언트 창을 스크롤하기 위해 gridInstance.Scroll (row, col)을 사용하는 상대 question의 대답. 그러나 스크롤바를 동기화하는 방법은 포함되어 있지 않습니다.
의견을 보내 주셔서 감사합니다.
사용자 정의 프레임
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와 add dummy 열을 비교하여 동일한 열을 정렬합니다. – Erxin
다른 모든 기능은 두 격자의 스크롤 막대를 동기화 스크롤하는 것 외에는 구현됩니다. 그것은 일반적인 문제가 보인다, 이미 [누군가가] (http://stackoverflow.com/questions/11269558/wxgrid-detecting-scroll-event) 어떻게 스크롤 이벤트를 감지했다. 그리드 창에서 마우스 휠 이벤트를 바인딩하는 방법 만 알 수있었습니다. – Erxin