Wxpython wx.lib.agw.ribbon中只有一个SimpleButton会导致布局错误

Wxpython wx.lib.agw.ribbon中只有一个SimpleButton会导致布局错误,wxpython,ribbon,Wxpython,Ribbon,好的结果是: 坏结果是: 我没有ribbon界面的用户体验,因此无法理解会发生什么: 是虫子吗 或者这是故意的行为,我应该以某种方式调整布局 守则: import wx import wx.lib.agw.ribbon as RB #import ribbon as RB class MyDialog(wx.Dialog): def __init__(self, *ls, **kw): wx.Dialog.__init__(self, *ls, **kw) ribb

好的结果是:

坏结果是:

我没有ribbon界面的用户体验,因此无法理解会发生什么:

  • 是虫子吗
  • 或者这是故意的行为,我应该以某种方式调整布局
守则:

import wx
import wx.lib.agw.ribbon as RB
#import ribbon as RB

class MyDialog(wx.Dialog):
  def __init__(self, *ls, **kw):
    wx.Dialog.__init__(self, *ls, **kw)
    ribbon = RB.RibbonBar(self, -1)

    page = RB.RibbonPage(ribbon, wx.ID_ANY, "Page")
    panel = RB.RibbonPanel(page, wx.ID_ANY, "Create Project")
    bbar = RB.RibbonButtonBar(panel)
    bmp = wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_OTHER, wx.Size(48, 48))
    bbar.AddSimpleButton(wx.ID_ANY, "New", bmp, '')
    #bbar.AddSimpleButton(wx.ID_ANY, "New2", bmp, '') # uncomment for the good result

    ribbon.Realize()
    s = wx.BoxSizer(wx.VERTICAL)
    s.Add(ribbon, 0, wx.EXPAND)
    self.SetSizer(s)

app = wx.PySimpleApp()
dlg = MyDialog(None, title="Test Ribbon", size=(200,150))
dlg.ShowModal()
dlg.Destroy()

好像有个虫子。当
RibbonPanel
上的文本比其内容长时,它会断开。试试这个:

panel = RB.RibbonPanel(page, wx.ID_ANY, "Create...")
您可以在按钮旁边添加一些空的小部件来解决这个问题

这里有一组很好的文档和示例: