【发布时间】:2014-02-20 04:07:34
【问题描述】:
当我将wx.Panel 嵌入另一个wx.Panel(这里ChildPanel 嵌入MyPanel)时,默认情况下,此 ChildPanel 不使用父级的 full 大小。为什么?
说ChildPanel 应该使用MyPanel 的全部空间有什么技巧吗?
没有BoxSizer 可以吗?
import wx
class MyPanel(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
self.SetBackgroundColour('#00f8f8')
# ChildPanel
self.ChildPanel = wx.Panel(self)
self.ChildPanel.SetBackgroundColour('#000000')
class DrawFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
MyPanel(self)
self.Show()
app = wx.App(False)
F = DrawFrame(None, title="Test", size=(500,500))
app.MainLoop()
【问题讨论】:
-
你需要把它放在一个带有 wx.GROW 或 wx.EXPAND 作为其标志之一的sizer中......或者如果它不能调整大小,则从 kwargs 手动设置大小..mypanel 可能也没有填充框架,因为它没有添加到 sizer 并且您没有将 size 参数传递给构造函数......这个问题真的让我感到困惑.. 如果你希望面板填充框架或当前面板,为什么不设置尺寸或尺寸器?
-
没有
sizer就不可能吗?我认为子面板默认情况下可以填充框架或面板,而不使用大小。 -
例如:默认情况下,
wx.Panel填充父wx.Frame而不使用sizer。 -
不,它不...不是通常...它们可能都具有相同的默认大小(因此,如果您不传递大小参数,它们将是相同的大小)或者如果您冒泡大小参数到面板...你为什么不直接使用尺寸器或手动设置尺寸?
-
确实如此:试试这里的代码,创建
MyPanel时没有size参数。然而MyPanel填充了父DrawFrame的100%,即使没有sizer,对吧?
标签: python wxpython panel wxwidgets