- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有几个不同大小的按钮,它们以我希望的方式扩展。但是,当我将父级添加到用于在框架中的所有元素周围添加边框的新 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()
注释掉行 57 和 58 并取消注释行 55 和 56 删除额外的 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/
控制台记录两次,但只需要显示第一个console.log(boxSize) var size = 100; if (size > 50) { var boxSize = size * 5;
我有一个函数可以计算屏幕上可以显示的图像数量,如果图像多于可以在屏幕上显示的图像数量,我会调整图像的大小,直到它们全部出现。 然后,我想用一个垂直盒子大小调整器和几个水平盒子大小调整器来显示它们! 盒
全面披露:我是 wxpython 的新手(大约 3 天),我不太了解 boxsizers 的细节。 我正在编写一个 GUI 来显示照片和一些相关的细节。我正在使用 box sizers 在主选项卡上水
我想使用 wx.BoxSizer 将元素垂直和水平居中。我尝试了这个不成功(结果:元素垂直居中但不是水平居中...): vsizer = wx.BoxSizer(wx.VERTICAL) hsizer
好吧,我有一个关于一些 wxWidgets sizer 的问题,以及我如何认为它们应该行动但没有行动...... 我对这些图像的设置是这样的: verticalBox = new wxBoxSizer
好的,我有一个正在编码的应用程序,我正在尝试使布局更简单: 注意文本是如何左对齐的,输入框是如何对齐的,我在 wxPython 演示代码中看到了这一点,但它们都使用了 flexgrid sizer,而
我使用 Panel 从 OpenCV 中绘制图像,但似乎这个 panel 不能放入 BoxSizer .我试着做 vbox = wx.BoxSizer(wx.VERTICAL) panel.SetSi
我正在向水平 wx.BoxSizer 添加元素,但它们不是彼此相邻放置,而是显示在彼此之上(所有元素都放置在父级的像素位置 (0,0) 中)面板)。 以下是文件的缩短版本(相关部分): main.
这段代码有什么问题?我试图将笔记本放在由 boxsizer 控制的面板上。我是 wxpython 的新手,不知道我做错了什么。当我运行它时,它只会把角落弄得一团糟:( import wx class
我正在尝试在水平 BoxSizer 中堆叠多个小部件。但是,我遇到了一些意想不到的行为。与 Sizer 中的项目均匀调整大小不同,一旦达到特定大小,项目将停止随窗口调整大小。 我认为从视觉上最好理解这
我正在使用 BoxSizer 作为水平和垂直布局。但是,当我在水平 BoxSizer 中使用垂直 BoxSizer 来包含我的按钮时,它会垂直显示在另一个元素旁边,当您调整它的大小时,它会折叠并隐藏按
如何在 Vertical BoxSizer 中设置间距? Vertival BoxSizer 中有什么与 GridSizer 中的 SetVGap(设置 sizer 中的单元格之间的垂直间隙(以像素为
我有几个不同大小的按钮,它们以我希望的方式扩展。但是,当我将父级添加到用于在框架中的所有元素周围添加边框的新 wx.BoxSizer 时,已添加的 sizer 在垂直方向上正常运行,但在水平方向上不正
我正在尝试将登录/密码页面放入 wx.Notebook 的一个选项卡中。但是 wx.BoxSizer 不起作用 - 它堆积了标签和按钮。 这是我的代码。 # Define the tab co
我在调整盒子大小方面遇到了一些问题。代码如下: .wrapper { text-align: center; } #bubble
我正在尝试将具有水平布局的大小调整器嵌套在笔记本页面面板的垂直布局大小调整器内。 我从 wxPython: Resizing a notebook within a notebook 中得到了一些灵
我是一名优秀的程序员,十分优秀!