wxPython:BoxSizer中的项目不水平扩展,仅垂直扩展

2023-11-27

我有几个不同大小的按钮,它们按照我想要的方式扩展。但是,当我将父级添加到新的 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 and 58和取消注释行55 and 56删除额外的 BoxSizer 并显示我期望所有功能如何运行(当然没有空格)。

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


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

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

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

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

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

剩下的就交给你了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wxPython:BoxSizer中的项目不水平扩展,仅垂直扩展 的相关文章

随机推荐

  • CSS 悬停在图像上 - 加载 div

    我想对悬停图像做 CSS 效果 当我将鼠标悬停在图像上时 我想显示一个包含文本等内容的 div 所以我想用这段代码做一些事情 div img src image png div div Test message div 我试图在 css 显
  • OpenDJ、OpenAM 和 OpenIAM 是免费软件

    已经使用 OpenDJ 和 OpenAM 的人有什么体验 旧版本似乎可以免费使用 但新版本似乎不能免费使用 它们与现有的商业产品相比如何 它们看起来比使用 OpenLDAP 和 CAS 更好 但看起来并不免费 您可以在下面找到答案 具体取决
  • SonarQube 5.3 后台任务失败且未登录仪表板

    我知道这类似于sonarqube 5 2 后台任务有时会失败且没有日志 但是我无法发表评论 由于缺乏声誉点 来添加更多信息 因此尝试添加这篇文章作为答案 但它被版主删除了 我遇到了问题SonarQube 5 2 昨天升级后现在是 5 3 我
  • 使用 Obj-C 重命名现有文件

    我已经多次看到这个问题 但到目前为止我无法使用任何后期解决方案取得成功 我想做的是重命名应用程序本地存储中的文件 对于 Obj c 来说也是一种新功能 我能够检索旧路径并创建新路径 但是我必须写什么才能真正更改文件名 到目前为止我所拥有的是
  • 无法通过反射设置布尔值

    我无法设置Boolean使用 Java 反射将值赋给字段 字段数据类型为java lang Boolean 但是 如果数据类型是原始类型 我可以设置该值 即boolean 这是一个简单的 VOBoolean类型和原始类型 public cl
  • ASP.NET MVC CMS 数据库中的动态路由

    基本上 我有一个使用 ASP NET MVC 构建的 CMS 后端 现在我正在转向前端站点 并且需要能够根据输入的路由从我的 CMS 数据库加载页面 所以如果用户输入example com students information MVC将
  • Remote_addr 不返回 IPv4 地址

    我在本地主机上使用 xampp 当我使用 SERVER REMOTE ADDR 它返回 1 也在phpinfo 为什么要这样做 我希望它返回一个正常的 IP 地址 如 127 0 0 1 我的操作系统是windows vista 1 is
  • 如何将 Scala 数组传递给 Scala vararg 方法?

    考虑下面的代码 private def test some String private def call val some Array asd zxc test some 它打印expect String found Array Stri
  • userinterfaceonly:=true 似乎不允许 VBA 更改条件格式?

    我正在通过 Worksheet Change 事件运行一段代码 并且让它在事件开始时调用 unprotect sub 并在事件结束时匹配调用 protected sub 这按预期工作 我正在尝试在工作簿打开事件中将保护设置为 userint
  • 如何使用 Rails Clockwork gem 运行 rake 任务?

    从 Clockwork 调用 rake 任务的语法是什么 我尝试了各种语法 但似乎没有任何效果 我对发条特别感兴趣 因为 Heroku 支持它 这是我的clock rb 使用与每当gem使用相同的语法 module Clockwork pu
  • Angular2(或 TypeScript)中的“预期声明或声明”错误

    我对 Angular2 和 TypeScript 完全陌生 我正在关注教程 但我一直在处理这个错误 是编译器的错误还是什么原因导致的 看起来您正在使用旧版本的编译器 您需要下载并安装TypeScript 1 5 测试版 或更新版本 以便使用
  • 我们可以在.NETironpython中加载pandasDataFrame吗?

    我们可以使用iron python在 NET空间中加载pandas DataFrame吗 如果不是 我正在考虑将 pandas df 转换为 csv 文件 然后在 net 空间中读取 不 Pandas 与 CPython 紧密相连 就像你说
  • 读取 Filter 中的 Response.Body 流

    我编写了在服务器方法调用后运行的过滤器 并将其内容打印到控制台 代码是用ASP NET core v2 1编写的 public class MyCustomFilter ActionFilterAttribute public overri
  • C#:文本文件的尾部程序

    我有一个不断记录短行的日志文件 我需要开发一个对添加到该文件的新行做出反应 或轮询或侦听 的服务 这是一种 unix 的尾部程序 以便我的服务始终保持最新状态以保护该文件 我认为打开读取流并保持打开状态不是一个好主意 也许我应该使用 Fil
  • 使用Javascript获取Json对象的最大值

    这应该是一件容易的事 我就是想不通 如何使用 javascript 从这段 JSON 中获取最大值 data one 21 two 35 three 24 four 2 five 18 meta title Happy with the s
  • 有没有其他方法可以改变脚手架抽屉的宽度?

    目前Flutter Material不直接支持编辑Scaffold抽屉控制器 他们的图书馆打开了设置抽屉宽度的问题 我们可以访问和更改宽度吗 或者是否存在自定义脚手架实现来改变行为 只需复制抽屉源码 to a MyDrawer阶级与变革 k
  • 为什么流行的Java Base64编码库使用OutputStreams进行编码,使用InputStreams进行编码?

    我一直在尝试解决 Java 程序中的内存问题 其中我们将整个文件加载到内存中 对其进行 base64 编码 然后将其用作发布请求中的表单参数 这是由于文件太大而导致 OOME 我正在开发一种解决方案 可以通过 Base64 编码器将文件流式
  • Gradle 与文件目录的依赖关系

    我正在为 jboss Ear 应用程序编写 EJB jar 模块 我正在使用 gradle 我不想尝试声明 jar 在运行时从 JBoss 依赖的所有不同依赖项 有没有办法声明目录树中所有文件的依赖关系 在您的依赖项部分build grad
  • 如何创建文件格式?

    我一直在阅读一些有关文件格式的文章 并且对它们非常感兴趣 我想知道创建格式的过程是什么 例如 jpeg gif 或音频格式 您会使用什么编程语言 如果您使用某种编程语言 该网站警告我 这个问题可能会被关闭 但这只是我在追求知识时要冒的风险
  • wxPython:BoxSizer中的项目不水平扩展,仅垂直扩展

    我有几个不同大小的按钮 它们按照我想要的方式扩展 但是 当我将父级添加到新的 wx BoxSizer 用于在框架中的所有元素周围添加边框 时 已添加的 sizer 可以在垂直方向上正确运行 但不能在水平方向上运行 下面的代码演示了这个问题