我使用Panel
从OpenCV
中提取图片,但似乎panel
无法放入BoxSizer
。我试着做
vbox = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox)
vbox.Add(wx.Button(panel, label='aaa', size=(70, 30)))
vbox.Add(wx.Button(panel, label='aaa', size=(70, 30)))
vbox.Add(wx.Button(panel, label='aaa', size=(70, 30)))
vbox.Add(OpenCVCanvas(self), border=10)
按钮布局正确,但面板始终位于左上角。我做错了什么?
小组代码:
class OpenCVCanvas(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.Bind(wx.EVT_PAINT, self.onPaint)
self.bmp = None
def updateImage(self, frame):
if self.bmp is None:
height, width = frame.shape[:2]
self.SetSize((width, height))
self.bmp = wx.BitmapFromBuffer(width, height, frame)
self.bmp.CopyFromBuffer(frame)
self.Refresh()
def onPaint(self, evt):
if self.bmp is not None:
dc = wx.BufferedPaintDC(self)
dc.DrawBitmap(self.bmp, 0, 0)
答案 0 :(得分:2)
这可能是问题的根源:
vbox.Add(OpenCVCanvas(self),border = 10)
您正在创建panel
子项的按钮,并将它们添加到设置为panel
sizer的sizer,但OpenCVCanvas
正在使用self
我假设它的父亲是panel
的父亲,这意味着OpenCVCanvas
是panel
的兄弟,而不是它的孩子。 sizer无法管理不是sizer所分配窗口的子项的项目的大小和布局。