Я добавил style = wx.te_Multiline в свой элемент wx.textctrl, но моя полоса прокрутки не работает - PullRequest
0 голосов
/ 28 июня 2011

Я бы хотел, чтобы мое поле TextCtrl получало вертикальную прокрутку, когда я записывал на него события.

Код, который у меня пока есть,

sizer = wx.BoxSizer(wx.VERTICAL) #Create a vertical sizer

#Create our multiline console area          
self.term = wx.TextCtrl(self, -1, '',  style=wx.TE_MULTILINE) 

#Add our console to the sizer
sizer.Add(self.term, 5, wx.EXPAND | wx.TOP | wx.BOTTOM, 0) 

gs = wx.GridSizer(1, 3, 0, 0) #Define the grid layout in rows, columns

gs.AddMany([
    (wx.Button(self.panel, 3, 'Browse'), 0, wx.EXPAND),
    (wx.Button(self.panel, 1, 'RUN'), 0, wx.EXPAND),
    (wx.Button(self.panel, 2, 'QUIT'), 0, wx.EXPAND) ])

#Add our defined grid layout above to our sizer                 
sizer.Add(gs, 1, wx.EXPAND)

self.SetSizer(sizer) #Pass & show our sizer

Я получаю полосу прокрутки, но она не реагирует на щелчки мышью. Что я делаю не так?

1 Ответ

2 голосов
/ 28 июня 2011

Эти три кнопки являются потомками self.panel, который просто висит в вашем кадре, перехватывая события мыши. Если вы разрешите изменение размера, вы увидите, что размер панели не изменяется вместе с кнопками, но вы можете щелкнуть ту часть TextCtrl, которая выходит за ее пределы.

Вы можете либо полностью избавиться от панели и сделать все дочерние элементы рамки, либо сделать gs размер панели, а затем добавить панель в основной размер вместо gs:

    sizer.Add(self.term, 5, wx.EXPAND | wx.TOP | wx.BOTTOM, 0) 

    gs = wx.GridSizer(1, 3, 0, 0) #Define the grid layout in rows, columns
    gs.AddMany([
        (wx.Button(self.panel, 3, 'Browse'), 0, wx.EXPAND),
        (wx.Button(self.panel, 1, 'RUN'), 0, wx.EXPAND),
        (wx.Button(self.panel, 2, 'QUIT'), 0, wx.EXPAND) ])

    self.panel.SetSizer(gs)

    sizer.Add(self.panel, 1, wx.EXPAND) #Add our defined grid layout above to our sizer
...