wxpython flexgridSizer按钮右下角

wxpython flexgridSizer button bottom right corner

我想把"Enregistrer"按钮放在右下角:

这是我的代码:

    sizer = wx.FlexGridSizer(10, 6, 10, 10)
    # here i had all the other stuff an put it in the sizer
    # self refere to  a wx.panel
    # SPACE
    for v in range(0, 40):
        sizer.Add(10,10,wx.EXPAND)

    btn = wx.Button(self, wx.ID_ANY, "Enregistrer")
    btn.Bind(wx.EVT_BUTTON, self.save)
    sizer.Add(btn, 2, wx.ALIGN_BOTTOM|wx.ALIGN_RIGHT)
    self.SetSizer(sizer)

我不明白为什么按钮没有转到角落。

你能帮帮我吗?

FlexGridSizer (10x6) 的申报尺寸与您放入其中的物品数量(40 + 1 按钮)不匹配。 稍微更改您的代码:

#!/usr/bin/env python
import wx
class MyFrame(wx.Frame):
    def __init__(self, parent, ID, title):
        wx.Frame.__init__(self, parent, ID, title, wx.DefaultPosition)
        sizer = wx.FlexGridSizer(10, 6, 10, 10)
    # here i had all the other stuff an put it in the sizer
    # self refere to  a wx.panel
    # SPACE
        v=[]
        for i in range(0,59):
            v.append(wx.StaticText(self,-1,"......"+str(i)))
        for i in v:
            sizer.Add(i,1,wx.EXPAND)

        btn = wx.Button(self, wx.ID_ANY, "Enregistrer")
        #btn.Bind(wx.EVT_BUTTON, self.save)
        sizer.Add(btn,0,wx.EXPAND|wx.ALIGN_RIGHT)
        self.SetSizer(sizer)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, "FlexGridSizer")
        frame.Show(True)
        self.SetTopWindow(frame)
        return True
if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()

我们得到这个:

但是,如果您希望按钮单独位于屏幕最 right-hand 底部,您可能需要添加多个 sizer 或完全选择不同的 sizer。例如 GridSizerGridBagSizer