Wxpython 面板缩放以适应整个父框架,尽管给定了它的大小
我是Wxpython 面板缩放以适应整个父框架,尽管给定了它的大小,wxpython,Wxpython,我是wxpython的新手。 我试图有一个框架,在一个小的面板区域内,我把它涂成蓝色。 但是,无论我使用size属性对wx.Panel执行什么操作,单个面板都会捕捉到其父帧的大小。 如果我添加另一个面板(下面代码中的pane2),则两个窗格都以正确的大小绘制 我知道我可以用浆纱机控制这些面板。但是我试图理解为什么wx.Panelobject在单独运行时的行为方式 代码如下: import wx class PlateGui(wx.Frame): def __init__(se
wxpython
的新手。
我试图有一个框架,在一个小的面板区域内,我把它涂成蓝色。
但是,无论我使用size属性对wx.Panel执行什么操作,单个面板都会捕捉到其父帧的大小。
如果我添加另一个面板(下面代码中的pane2),则两个窗格都以正确的大小绘制
我知道我可以用浆纱机控制这些面板。但是我试图理解为什么wx.Panel
object在单独运行时的行为方式
代码如下:
import wx
class PlateGui(wx.Frame):
def __init__(self, *args , **kwds):
self.frame = wx.Frame.__init__(self,*args, **kwds)
print "Made frame"
if __name__ == "__main__":
an_app = wx.PySimpleApp()
aframe = PlateGui(parent=None,id=-1,title="Test Frame",size=(300, 300))
pane = wx.Panel(parent=aframe,size=(100,100),style=wx.RAISED_BORDER)
pane.SetBackgroundColour(wx.Colour(0,0,255))
# pane2 = wx.Panel(parent=aframe,size=(200,100),style=wx.RAISED_BORDER)
# Commenting out the second pane makes the first pane fit
# entire frame regardless of size specified
aframe.Show()
an_app.MainLoop()
默认情况下,wx.Frame有一个sizer,可以扩展其子对象以填充该帧。创建您自己的大小调整器,将面板添加到其中(不指定展开标志),并将其设置为框架的大小调整器
import wx
app = wx.PySimpleApp()
frame = wx.Frame(None, -1, 'Test')
sizer = wx.BoxSizer(wx.VERTICAL)
panel = wx.Panel(frame, -1, size=(100,100), style=wx.BORDER_RAISED)
sizer.Add(panel)
frame.SetSizer(sizer)
frame.Show()
app.MainLoop()
真棒的雾鸟——多亏了一吨——wx.Frame的这一“特征”将其尺寸仪强加于它唯一的孩子身上的记录不是很好,或者是吗?。我挣扎了几个小时,当我最后添加第二个窗格时,wx.Frame从它的sizer中释放了第一个窗格。文档中是否有我可以从中找到答案的地方?我会投票支持你,但我是Stackoverflow的新手,我想新手谢谢你对你没有任何帮助。感谢您从这里回答这个问题:“如果框架只有一个子窗口,不包括状态和工具栏,则此子窗口的大小将调整为占据整个框架客户端区域。”如果您喜欢我的答案,您应该投票支持我。如果你相信我的答案是正确的,你就应该把它标为正确的。不管你有多新。:)嘿,几年后我遇到了一个问题:假设我仍然想要一个测码器,但我也希望面板能够安装到父框架中,我需要做什么
sizer.add(panel,wx.EXPAND)
似乎不起作用。请尝试sizer.add(panel,1,wx.EXPAND)