python中用wxpython创建子窗口时,子窗口的布局全部无法显示

python中用wxpython创建子窗口时,子窗口的布局全部无法显示,第1张

wxpython有个BUG,就是如果只放一个组件,组件包括panel,button等等,那么这个组件无法设置大小和位置,就算设置了数歼也无效。所以有两个办法:

1.设置Panel类的size,pos属性(具体init的时候就可以设置),且组件大于1个历宏.

2.使用布局器,类似

mainSizer = wx.BoxSizer(wx.VERTICAL)

self.SetSizer(mainSizer)

mainSizer.Add(panel, 1, wx.EXPAND)#第一个参数布局的组件,第二参数是占得比例,第三薯烂冲个是一些属性。

proportion控制控件相对大小,proportion如果为0,表示默认大小。比如一个box里面有两个相同控件A,B,如果A,B的察卜proportioin分别为2和1,那么A和B显示出来的大小比例就是2:1;如果一个box里面有三个相同控件A,B,C,它们的proportion分别为0,1,1,那么A会是默认大小(比如一个只岁没厅有一行的文本框),B,C平分这个box的其余部分。

wx.EXPAND 表示空间会填充满所有它能填充的地方,比如在一乎隐个box里面放一个空间,加上这个style=wx.EXPAND,控件就会占据整个box的空间。它是和wx.LEFT, wx.RIGHT这些style配合使用的。

wx.ALL = wx.LEFT | wx.RIGHT | wx.TOP | wx.BOTTOM

我试了一下,貌似如果纤宏迹只有一个组件的话,默认是填满整个窗口,两个就没毁并问题了。

如果真绝春只有一个,可以试试布局

class PosFrame(wx.Frame):

def __init__(self):

wx.Frame.__init__(self, None, size = (200, 200), pos = (200, 200))

panel1 = wx.Panel(self, -1, pos = (50, 50), size = (50, 50))

panel1.SetBackgroundColour("green")

#panel2 = wx.Panel(self, -1, pos = (100, 100), size = (50, 50))

#panel2.SetBackgroundColour("blue")

btn = wx.Button(panel1, -1, "PK")


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8032198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存