我在wx.textctrl中添加了style=wx.te_Multiline,但滚动条不工作

0 投票
1 回答
1455 浏览
提问于 2025-04-16 20:27

我希望我的文本框在我写内容的时候能够出现一个垂直滚动条。

我现在的代码是:

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

这三个按钮是self.panel的子元素,self.panel就像是一个在你的窗口里待着的东西,负责处理你的鼠标事件。如果你允许调整窗口大小,你会发现面板并不会和按钮一起变大,但你还是可以点击超出面板的文本框部分。

你可以选择完全去掉这个面板,让所有东西都直接放在窗口里,或者把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

撰写回答