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中的项目不水平扩展,仅垂直扩展 的相关文章

  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

    这是漫长的一天 我有点困惑 我正在读取一个包含大量宽字符字符串的二进制文件 我想将它们转储为 Python unicode 字符串 为了解压非字符串数据 我使用 struct 模块 但我不知道如何对字符串执行相同的操作 例如 阅读 系列 一
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • 在 Python distutils 中从 setup.py 查找脚本目录的正确方法?

    我正在分发一个具有以下结构的包 mymodule mymodule init py mymodule code py scripts script1 py scripts script2 py The mymodule的子目录mymodul
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 如何计算numpy数组中元素的频率?

    我有一个 3 D numpy 数组 其中包含重复的元素 counterTraj shape 13530 1 1 例如 counterTraj 包含这样的元素 我只显示了几个元素 array 136 129 130 103 102 101 我
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • 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 可以在垂直方向上正确运行 但不能在水平方向上运行 下面的代码演示了这个问题