0

次のように、サイザーとコントロールを 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以下で問題なく機能しました。

私が見るあなたのコードとの唯一の違いは、最初にサイザーをパネルに関連付けてから、そのパッチが逆の方法でコントロールを作成することですが、実際には問題ではありません。したがって、これは以前のバージョンの wxWidgets の単なるバグであり、その後修正された可能性が高いようです。

于 2013-09-12T19:52:03.617 に答える