GenButton对齐wxpython

GenButton alignment wxpython

我正在努力寻找对齐 GenButton 的答案, 我已经查看了 wxpython 网站上的文档,但看不到任何解决这个问题的选项,希望你们中的一个能给我指出正确的方向,因为我需要将我的按钮对齐到catpanel,这是我到目前为止的代码。

import wx, os, os.path
from wx.lib.buttons import GenButton

class Home(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, size=(1024, 576),style=wx.NO_BORDER)
        self.SetBackgroundColour(wx.Colour(107, 109, 109))

        self.catpanel()


    def catpanel(self):
        homepanel = wx.Panel(self, wx.ALIGN_CENTER)
        homepanel.BackgroundColour = (86, 88, 88)
        homepanel.SetSize((1024, 40))
        GenButton(homepanel, id=wx.ID_ANY, label="Home", style=wx.NO_BORDER, size=(-1, 40))

        self.Centre()
        self.Show()

if __name__ == '__main__':

    app = wx.App()
    Home(None)
    app.MainLoop()

`

我正在使用 windows,我也知道这可以通过使用 pos = wx.DefaultPosition 来实现,但是想要一个更准确的 wx 方法来做到这一点,有人可以检查代码并让我知道是否我做对了,因为我是 wxpython / python 的新手,一般来说

tnx

GUI 工具包往往对控件的大小很聪明:您指定了我们的 GenButton 实例的高度而不是宽度 (size=(-1, 40))。如果您将按钮宽度调整为父面板宽度,您将得到您想要的 (size=(1024, 40))。

但是,这不是您应该做的,因为您会使用 sizer。对于 wx.Frame 的样式 wx.NO_BORDER,您似乎遇到了另一个麻烦,其中 sizer 无法像预期的那样与 GenButton 一起工作。

class Home(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, style=wx.NO_BORDER)
        self.SetBackgroundColour(wx.Colour(107, 109, 109))

        homepanel = wx.Panel(self, -1)
        sz = wx.BoxSizer(wx.VERTICAL)
        btn = GenButton(homepanel, id=wx.ID_ANY, label="Home", style=wx.NO_BORDER, size=(-1, 40))
        sz.Add(btn, 0, wx.EXPAND|wx.ALL, 0)
        # Dummy placeholder with heigth already set
        sz.Add((-1, 400), 1)

        homepanel.SetSizer(sz)
        # try to uncomment next line: without resizing
        # the window will not be layouted
        self.SetSize((1024, -1))
        self.Centre()
        self.Show()