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()
我正在努力寻找对齐 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()