我已将style = wx.te_Multiline添加到我的wx.textctrl项目但我的滚动条不起作用

时间:2011-06-28 15:28:24

标签: python user-interface wxpython wxwidgets

我希望我的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

我得到了一个scoll bar,但它没有响应鼠标点击。我做错了什么?

1 个答案:

答案 0 :(得分:2)

这三个按钮是self.panel的孩子,只是挂在你的框架中,拦截你的鼠标事件。如果允许调整大小,您将看到面板没有与按钮一起调整大小,但您可以单击TextCtrl中超出它的部分。

您可以完全摆脱面板并使所有内容成为框架的子项,或者使gs成为面板的sizer,并将面板添加到主sizer中以代替gs:< / p>

    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