gpt4 book ai didi

python - wxWidgets:BoxSizer 内的面板没有按预期行为

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:33 25 4
gpt4 key购买 nike

我使用 PanelOpenCV 中绘制图像,但似乎这个 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)

最佳答案

这可能是问题的根源:

vbox.Add(OpenCVCanvas(self), border=10)

您正在创建作为 panel 子级的按钮,并将它们添加到设置为 panel 的 sizer 的 sizer,但是 OpenCVCanvas 使用 self 作为它的父级,我假设它是 panel 的父级,这意味着 OpenCVCanvas 的兄弟panel,而不是它的 child 。 sizer 无法管理不是 sizer 分配到的窗口的子项的大小和布局。

关于python - wxWidgets:BoxSizer 内的面板没有按预期行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37983186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com