gpt4 book ai didi

python - wxPython:BoxSizer 中的项目不会水平扩展,只会垂直扩展

转载 作者:太空狗 更新时间:2023-10-29 18:16:19 24 4
gpt4 key购买 nike

我有几个不同大小的按钮,它们以我希望的方式扩展。但是,当我将父级添加到用于在框架中的所有元素周围添加边框的新 wx.BoxSizer 时,已添加的 sizer 在垂直方向上正常运行,但在水平方向上不正常。

下面的代码演示了这个问题:

#! /usr/bin/env python

import wx
import webbrowser

class App(wx.App):


def OnInit(self):
frame = MainFrame()
frame.Show()
self.SetTopWindow(frame)
return True


class MainFrame(wx.Frame):

title = 'Title'


def __init__(self):
wx.Frame.__init__(self, None, -1, self.title)

panel = wx.Panel(self)

#icon = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG)
#self.SetIcon(icon)

sizer = wx.FlexGridSizer(rows=2, cols=1, vgap=10, hgap=10)

button1 = wx.Button(panel, -1, 'BUTTON')
sizer.Add(button1, 0, wx.EXPAND)

buttonSizer = wx.FlexGridSizer(rows=1, cols=4, vgap=10, hgap=5)

buttonDelete = wx.Button(panel, -1, 'Delete')
buttonSizer.Add(buttonDelete, 0, 0)

buttonEdit = wx.Button(panel, -1, 'Edit')
buttonSizer.Add(buttonEdit, 0, 0)

buttonNew = wx.Button(panel, -1, 'New')
buttonSizer.Add(buttonNew, 0, 0)

buttonSizer.AddGrowableCol(0, 0)

sizer.Add(buttonSizer, 0, wx.EXPAND|wx.HORIZONTAL)

sizer.AddGrowableCol(0, 0)
sizer.AddGrowableRow(0, 0)

mainSizer = wx.BoxSizer(wx.EXPAND)
mainSizer.Add(sizer, 0, wx.EXPAND|wx.ALL, 10)

#panel.SetSizerAndFit(sizer)
#sizer.SetSizeHints(self)
panel.SetSizerAndFit(mainSizer)
mainSizer.SetSizeHints(self)


if __name__ == '__main__':
app = App(False)
app.MainLoop()

注释掉行 5758 并取消注释行 5556 删除额外的 BoxSizer 并显示如何我希望一切正常(当然没有空格)。

我完全被这个问题困住了,仍然不知道如何解决它。

最佳答案

首先,您错误地传递了一些标志。 BoxSizer 采用 wxHORIZONTAL 或 wxVERTICAL,而不是 wxEXPAND。 sizer.Add 不占用 wxHORIZONTAL。

如果您有一个 VERTICAL BoxSizer,wxEXPAND 将使控件水平填充,而比例为 1 或更多(Add 的第二个参数)将使控件垂直填充。 HORIZONTAL BoxSizers 则相反。

sizer = wx.BoxSizer(wxVERTICAL)
sizer.Add(widget1, 0, wxEXPAND)
sizer.Add(widget2, 1)

widget1 将水平展开。 widget2 将垂直展开。

如果您将一个 sizer 放在另一个 sizer 中,您需要确保设置其比例和 EXPAND 标志,以便其内部按照您希望的方式增长。

剩下的就交给你了。

关于python - wxPython:BoxSizer 中的项目不会水平扩展,只会垂直扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1280600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com