wxpython控件自适应窗口大小

问题:

wxpython作的窗口,点击窗口最大化,就会出问题,1、窗口控件并不一起最大化。2、最大化后有些控件找不着了,再恢复窗口,那些消失的控件一样找不到。

wxPython 中最复杂的 sizer.
它带来了对部件的显式定位. 部件项目还可以跨越行或列. 专题教程:wxpython中文教程

wx.GridBagSizer 的构造器是十分简单的。
wx.GridBagSizer (integer vgap, integer hgap)
垂直和水平空白 (gap) 定义了子部件之间的空白距离. 通过 Add() 方法向网格里添加部件项目.
Add(self, item, tuple pos, tuple span=wx.DefaultSpan, integer flag=0,
integer border=0, userData=None)
“item” 指你要插入到网格中的部件. “pos” 指定虚拟网格的位置. 左上单元格的 “pos” 值为(0, 0).“span” 是一个对应部件的跨度值. 比如(3, 2)指一个部件要跨越 3 行 2 列. “flag” 和 “border” 两个参数在早前的 wx.BoxSizer 中已经讨论了.
网格中的这些部件项目可以随窗口缩放而改变其大小,也可以保持不变.

如果需要部件变大或缩小,可以使用这两个方法.
AddGrowableRow(integer row)
AddGrowableCol(integer col)

代码:

import wx


class MyFrame(wx.Frame):
    def __init__(self,parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition)
        sizer = wx.GridBagSizer(9, 9)
        sizer.Add(wx.Button(self, -1, "按钮1"), (0, 0), wx.DefaultSpan,wx.ALL, 5)
        sizer.Add(wx.Button(self, -1, "按钮2随着主窗口布局变动"), (1, 1), (1, 7), wx.EXPAND)
        sizer.Add(wx.Button(self, -1, "按钮3随着主窗口布局变动"), (6, 6), (3, 3), wx.EXPAND)
        sizer.Add(wx.Button(self, -1, "按钮4"), (3, 0), (1, 1), wx.ALIGN_CENTER)
        sizer.Add(wx.Button(self, -1, "按钮5"), (4, 0), (1, 1), wx.ALIGN_LEFT)
        sizer.Add(wx.Button(self, -1, "按钮6"), (5, 0), (1, 1), wx.ALIGN_RIGHT)
        sizer.AddGrowableRow(6)
        sizer.AddGrowableCol(6)
        self.SetSizerAndFit(sizer)
        self.Centre()


class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, 'wxgridbagsizer.py')
        frame.Show(True)
        return True
app = MyApp(0)
app.MainLoop()

效果及更多内容访问omegaxyz.com

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值