首页 > 其他分享 >Layout()方法用于布局管理器的更新,解决panel刷新后其中控件挤作一坨的问题

Layout()方法用于布局管理器的更新,解决panel刷新后其中控件挤作一坨的问题

时间:2023-06-02 10:45:07浏览次数:42  
标签:控件 管理器 sizer 挤作 Layout wx panel

在wxPython中,Layout()方法用于布局管理器的更新。它会告诉布局管理器重新计算和调整子控件的大小和位置。一般来说,当您:- 添加或删除子控件
- 隐藏或显示子控件
- 改变子控件的大小
- 改变容器的大小这些情况下,您需要调用Layout()方法,告诉布局管理器进行重新布局。例如,在BoxSizer中:

python
sizer = wx.BoxSizer(wx.HORIZONTAL)
panel.SetSizer(sizer)

button1 = wx.Button(panel, label="Button 1")
sizer.Add(button1, 0, wx.ALL, 5)

button2 = wx.Button(panel, label="Button 2")
sizer.Add(button2, 0, wx.ALL, 5)  

# 添加一个新按钮,需要调用Layout()
button3 = wx.Button(panel, label="Button 3")
sizer.Add(button3, 0, wx.ALL, 5)
panel.Layout()

 

在FlexGridSizer中:
python
sizer = wx.FlexGridSizer(2, 3, 5, 5)
panel.SetSizer(sizer)

# ...添加子控件...

# 改变容器的大小,需要调用Layout()
panel.SetSize((200, 200)) 
panel.Layout()

 

Layout()方法的用法可以总结为以下几点: 1. 调用容器的Layout()方法,像Panel,Frame,Dialog等。这会重新计算所有子控件的大小和位置,并且根据布局管理器的设置进行调整。 2. 当添加,删除,隐藏或显示子控件后调用Layout()。这会让布局管理器重新布局以适应控件的变化。 3. 当改变容器或子控件的大小后调用Layout()。这会让布局管理器根据新的空间重新布局控件。 4. Layout()会根据布局管理器的类型和设置来布局控件。例如BoxSizer会根据orientation和proportion值来布局,FlexGridSizer会根据rows, cols和vgap, hgap来布局。 5. 如果不调用Layout(),布局管理器不会自动响应上述变化,这可能导致显示问题,如控件重叠或容器空白部分。 6. Layout()会首先计算每个子控件的最佳大小,然后根据布局管理器的规则来摆放这些控件。 7. 对于容器内嵌套的其他容器,Layout()会递归重新布局所有子孙控件。 8. 除非必要,否则不要频繁调用Layout(),因为它可能影响性能。可以在批量操作完成后统一调用。 一个简单的例子:
python
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.HORIZONTAL)
panel.SetSizer(sizer)

btn1 = wx.Button(panel, label="Button 1")
sizer.Add(btn1, 0, wx.ALL, 5)

btn2 = wx.Button(panel, label="Button 2")
sizer.Add(btn2, 0, wx.ALL, 5)

# 添加一个按钮,需要调用Layout()
btn3 = wx.Button(panel, label="Button 3")
sizer.Add(btn3, 0, wx.ALL, 5)
panel.Layout()  

# 改变面板大小,再次调用Layout()
panel.SetSize((200, 200))
panel.Layout()

 

         

标签:控件,管理器,sizer,挤作,Layout,wx,panel
From: https://www.cnblogs.com/babashi9527/p/17451099.html

相关文章

  • 转载:用pageOffice控件实现 office word文档在线编辑另存为pdf的功能
    用pageOffice控件实现officeword文档在线编辑另存为pdf的功能1应用场景OA办公中,经常要将word文档转存为pdf方法,方式文档的查看。怎么实现word文档的转存为pdf呢?2实现方法通过pageOffice实现简单的在线打开编辑word后,只要增加一行document.getElementById("PageOfficeCt......
  • layui 日期控件问题
    日期控件正常可弹出,点击返回,设置页面隐藏后,再显示,日期控件不弹出。//返回列表$('#backList').on('click',function(){$('#xxx').hide();$('#yyyy').show();$(window).trigger('resize');});日期控件渲染的时候需要清除lay-key......
  • 如何绑定Property以实现控件属性同步
    如何绑定Property以实现控件属性同步控件的属性往往是各种Property,比如StringProperty,IntegerProperty。它们有着特殊的性质:可以在其上添加一个监听函数,在属性发生变化时自动调用可以绑定另一个Property,从而同步变更效果展示示例代码importjavafx.application.A......
  • 界面控件DevExpress ASP.NET新主题——Office 365暗黑主题的应用
    DevExpressASP.NET WebFormsControls拥有针对Web表单(包括报表)的110+种UI控件,DevExpressASP.NETMVCExtensions是服务器端MVC扩展或客户端控件,由轻量级JavaScript小部件提供支持的70+个高性能DevExpressASP.NETCoreControls,包含功能完善的报表平台。在之前发布的v22.1版......
  • 常见控件交互方法
    点击方法element.click()输入操作element.send_keys('appium')设置元素的值element.set_value('appium')清除操作element.clear()是否可见element.is_displayed()返回True/False是否可用element.is_enabled()返回True/False是否被选中element.is_selected()返回True/Fal......
  • 手机直播源码,android 轮播图(自定义组合控件)
    手机直播源码,android轮播图(自定义组合控件)1.项目gradle添加一下配置:  allprojects{ repositories{ ... maven{url'https://jitpack.io'} } } ​2.module中的gradle添加依赖:  dependencies{   implementation'com.github.truemi:SlideS......
  • 记录一次ScrollViewer控件 经过大量文本数据卡顿的原因
     在WPF中,CanContentScroll是ScrollViewer控件的一个附加属性,它控制滚动视图中的内容是否按项或像素来滚动。当CanContentScroll设置为false时,表示ScrollViewer控件使用逐像素的滚动方式,这意味着滚动视图中的内容会以像素为单位进行滚动。在这种情况下,如果您需要展示......
  • 直播app源码,常用控件:进度指示器
    直播app源码,常用控件:进度指示器LinearProgressIndicator是一个线性、条状的进度条 LinearProgressIndicator({ //value表示当前的进度,取值范围为[0,1];如果value为null时则指示器会执行一个循环动画(模糊进度);当value不为null时,指示器为一个具体进度的进度条。 doublevalue......
  • 氚云前端代码对控件赋值
    一、先说表单子表,进行自动排序   varparent=this;//先将对象也就是子表,进行绑定改变事件this.D000685F044da22ee9b54a669386935b72c2b7a0.BindChange("Set",function(data){debugger;//vari=1;debugger......
  • ProgressBar控件(进度条)
    基础知识参阅官方文档:ProgressBar控件概述-WindowsForms.NETFramework|MicrosoftLearnC#ProgressBar的简单使用-Riku君-博客园(cnblogs.com)......