如何在wxRibbonBar上使用普通控件

时间:2013-09-12 17:53:01

标签: wxpython wxwidgets

我正在尝试将我的sizer与我的控件连接到wx RibbonPanel,如下所示:

class Main_Frame(wx.Frame):
  def __init__(me, parent=None, id=wx.ID_ANY, size=None ):
    wx.Frame.__init__(me, parent, id, size = size )

    me.ribbon = RB.RibbonBar(me, wx.ID_ANY)

    me.messages_page = RB.RibbonPage(me.ribbon, wx.ID_ANY,  "Messages" )

    me.messages_panel = RB.RibbonPanel(me.messages_page, wx.ID_ANY) 

    me.box = wx.BoxSizer( wx.VERTICAL )
    me.messages_panel.SetSizer( me.box )

    l1 = wx.StaticText( me.messages_panel, -1, label="Label1" )
    me.box.Add( l1 , 0, wx.EXPAND )
    t1 = wx.TextCtrl( me.messages_panel, -1 )
    me.box.Add( t1 , 0, wx.EXPAND )
    l1 = wx.StaticText( me.messages_panel, -1, label="Label2" )
    me.box.Add( l1 , 0, wx.EXPAND )
    t1 = wx.TextCtrl( me.messages_panel, -1 )
    me.box.Add( t1 , 0, wx.EXPAND )

    # shouldn't be necessary 
    me.messages_panel.Layout()

但我的所有控件都在(0,0)位置。有人以前做过吗?

1 个答案:

答案 0 :(得分:1)

是的,其他人之前已经这样做了,我刚刚测试了small patch C ++功能区样本做了这样的事情(忽略了这个补丁中wxWidgets本身的变化,我只是链接到它显示样本中的变化)。在2.9.5下,这对我没有任何问题。

我看到的与您的代码的唯一区别在于您首先将sizer与面板关联,然后创建控件,而该补丁则反过来,但它确实无关紧要。所以看起来这可能只是旧版wxWidgets中的一个错误,从那时起就被纠正了。