0

我正在尝试将我的 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) 位置。以前有人做过吗?

4

1 回答 1

1

是的,其他人以前做过,我最近刚刚测试了 C++ 功能区示例的一个小补丁,做这样的事情(忽略此补丁中对 wxWidgets 本身的更改,我只是链接到它以显示更改样本)。在 2.9.5 下,这对我来说没有任何问题。

我看到的与您的代码的唯一区别是您首先将 sizer 与面板相关联,然后创建控件,而该补丁以相反的方式执行此操作,但这并不重要。因此,这看起来更有可能只是旧版本 wxWidgets 中的一个错误,此后该错误已得到纠正。

于 2013-09-12T19:52:03.617 回答