wxPython:调整框架大小以匹配 sizer
wxPython: Resizing frame to match sizer
我正在尝试使用 wx.frame 在 wxPython 中创建一个浮动按钮栏。我已经开始使用 2 个按钮作为原型,但我无法调整框架本身的大小。 panel.SetSizerAndFit(sizer) 是正确的语句吗?
import wx
class MainToolbar(wx.Frame):
def __init__(self):
super(MainToolbar, self).__init__(None, title='some title')
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.HORIZONTAL)
buttonSizer = wx.GridSizer(rows=1, cols=2, vgap=1, hgap=1)
btn1 = wx.Button(panel, label='Ok', size=(100,100))
btn2 = wx.Button(panel, label='Close', size=(100,100))
buttonsArray = [ (btn1, 0, wx.EXPAND), (btn2, 0, wx.EXPAND) ]
buttonSizer.AddMany(buttonsArray)
sizer.Add(buttonSizer, proportion=1, flag=wx.EXPAND)
panel.SetSizerAndFit(sizer)
if __name__ == "__main__":
app = wx.App()
frame = MainToolbar()
frame.Show()
app.MainLoop()
结果是:
将小部件放入带有 proportion=1
和 EXPAND
标志的 sizer 中,将填充可用的 space。
此外,我不确定当您指定 size
并将小部件放入 sizer
时 wxPython 会做什么,我假设它使用隐式大小指令运行。
显然,如果您调整 window 的大小,我无法猜到您希望小部件如何反应,但这里有一个简单的方法来适应它。
import wx
class MainToolbar(wx.Frame):
def __init__(self):
super(MainToolbar, self).__init__(None, title='some title')
panel = wx.Panel(self)
buttonSizer = wx.GridSizer(rows=1, cols=2, vgap=1, hgap=1)
btn1 = wx.Button(panel, label='Ok', size=(100,100))
btn2 = wx.Button(panel, label='Close', size=(100,100))
buttonsArray = [ (btn1), (btn2) ]
buttonSizer.AddMany(buttonsArray)
panel.SetSizer(buttonSizer)
mainsizer = wx.BoxSizer(wx.VERTICAL)
mainsizer.Add(panel)
self.SetSizerAndFit(mainsizer)
self.Show()
if __name__ == "__main__":
app = wx.App()
frame = MainToolbar()
app.MainLoop()
我正在尝试使用 wx.frame 在 wxPython 中创建一个浮动按钮栏。我已经开始使用 2 个按钮作为原型,但我无法调整框架本身的大小。 panel.SetSizerAndFit(sizer) 是正确的语句吗?
import wx
class MainToolbar(wx.Frame):
def __init__(self):
super(MainToolbar, self).__init__(None, title='some title')
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.HORIZONTAL)
buttonSizer = wx.GridSizer(rows=1, cols=2, vgap=1, hgap=1)
btn1 = wx.Button(panel, label='Ok', size=(100,100))
btn2 = wx.Button(panel, label='Close', size=(100,100))
buttonsArray = [ (btn1, 0, wx.EXPAND), (btn2, 0, wx.EXPAND) ]
buttonSizer.AddMany(buttonsArray)
sizer.Add(buttonSizer, proportion=1, flag=wx.EXPAND)
panel.SetSizerAndFit(sizer)
if __name__ == "__main__":
app = wx.App()
frame = MainToolbar()
frame.Show()
app.MainLoop()
结果是:
将小部件放入带有 proportion=1
和 EXPAND
标志的 sizer 中,将填充可用的 space。
此外,我不确定当您指定 size
并将小部件放入 sizer
时 wxPython 会做什么,我假设它使用隐式大小指令运行。
显然,如果您调整 window 的大小,我无法猜到您希望小部件如何反应,但这里有一个简单的方法来适应它。
import wx
class MainToolbar(wx.Frame):
def __init__(self):
super(MainToolbar, self).__init__(None, title='some title')
panel = wx.Panel(self)
buttonSizer = wx.GridSizer(rows=1, cols=2, vgap=1, hgap=1)
btn1 = wx.Button(panel, label='Ok', size=(100,100))
btn2 = wx.Button(panel, label='Close', size=(100,100))
buttonsArray = [ (btn1), (btn2) ]
buttonSizer.AddMany(buttonsArray)
panel.SetSizer(buttonSizer)
mainsizer = wx.BoxSizer(wx.VERTICAL)
mainsizer.Add(panel)
self.SetSizerAndFit(mainsizer)
self.Show()
if __name__ == "__main__":
app = wx.App()
frame = MainToolbar()
app.MainLoop()