wxpython - wx.Panel缩放以适合整个父框架,尽管为其设置了尺寸

标签 wxpython

我是wxpython的新手。
我正在尝试使用一个框架,并在一个小面板区域内将其染成蓝色。
但是,无论我使用size属性做什么wx.Panel,单个面板都将对齐其父框架的大小。
如果我添加另一个面板(下面的代码中的pane2),则两个 Pane 均以正确的大小绘制。

我知道我可以使用定尺寸器控制这些面板。但是我试图理解为什么wx.Panel对象在独处时会表现出它的行为。

这是代码:

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,将面板添加到其中(不指定扩展标志),并将其设置为框架的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()

关于wxpython - wx.Panel缩放以适合整个父框架,尽管为其设置了尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1040290/

相关文章:

python - 如何获得 eval 语句以将数字作为 float 运行

python - wxPython SplitterWindow 不会在面板内展开

python 复选框事件触发

Python '&' 字符丢失

python - 如何根据某些搜索字符串更新 wxPython ListBox?

python - wxPython "Library not loaded"

python - 隐藏/保护 Python 代码

python - 在 Python、wx.python 中使用变量名中的占位符

python - 将坐标绘制为矩阵 matplotlib python

python - wxPython - 禁用整个菜单