Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython使用带面板的施胶器_Python_User Interface_Wxpython_Wxwidgets - Fatal编程技术网

wxPython使用带面板的施胶器

wxPython使用带面板的施胶器,python,user-interface,wxpython,wxwidgets,Python,User Interface,Wxpython,Wxwidgets,我正在尝试制作一个GUI,左侧有一个摄像头输入,摄像头流中有一些数据。在右边,我想要一些按钮和其他小部件。到目前为止,代码a有:(函数get_image()和pil_to_wx()工作正常,只是在下面的代码中没有显示) 当我运行这段代码时,我得到的只是一个小窗口,只有一个名为“TEST”的按钮(面板应该在右边)。以前的版本只有摄像头面板工作正常,所以这不是问题所在。我做错了什么? 更新: 子面板的大小是固定的,我看到带有摄像头的面板显示出来,但屏幕上只有一小行。带有按钮的部分显示得非常完美。首先

我正在尝试制作一个GUI,左侧有一个摄像头输入,摄像头流中有一些数据。在右边,我想要一些按钮和其他小部件。到目前为止,代码a有:(函数
get_image()
pil_to_wx()
工作正常,只是在下面的代码中没有显示)

当我运行这段代码时,我得到的只是一个小窗口,只有一个名为“TEST”的按钮(面板应该在右边)。以前的版本只有摄像头面板工作正常,所以这不是问题所在。我做错了什么?

更新:
子面板的大小是固定的,我看到带有摄像头的面板显示出来,但屏幕上只有一小行。带有按钮的部分显示得非常完美。

首先,您没有为您的
HUD面板提供任何尺寸,因此我不确定您希望它如何显示


其次,您一直在递归地调用
update
(每15毫秒一次),这肯定是个坏主意,因为这将消耗(一个)CPU的近100%,可能会阻止应用程序调度其他事件。

我添加了
self.SetSize((640480))
HUD面板
,与
外部面板
相同(以确保尺寸相同)。我在主框架中添加了一个两倍宽的尺寸,以确保两个面板都有足够的空间显示,但只有带有按钮的面板显示。您应该使用大小创建它,或者调用
SetInitialSize()
如果您希望它不收缩,请调用
SetSize()
以后不会阻止窗口变小(否则它的大小永远不会减小!)。添加
self.SetInitialSize()
效果很好,谢谢您的帮助!
class HUDPanel(wx.Panel):
    def __init__(self, parent):
        super(HUDPanel, self).__init__(parent, -1)
        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.Bind(wx.EVT_PAINT, self.on_paint)
        self.update()

    def update(self):
        self.Refresh()
        self.Update()
        wx.CallLater(15, self.update)

    def create_bitmap(self):
        image = get_image()
        bitmap = pil_to_wx(image)
        return bitmap

    def on_paint(self, event):
        bitmap = self.create_bitmap()
        dc = wx.AutoBufferedPaintDC(self)
        dc.DrawBitmap(bitmap, 0, 0)


class ExtraPanel(wx.Panel):
    def __init__(self, parent):
        super(ExtraPanel, self).__init__(parent, -1)
        My_Button = wx.Button(self,label="TEST")


class Frame(wx.Frame):
    def __init__(self):
        style = wx.DEFAULT_FRAME_STYLE & ~wx.RESIZE_BORDER & ~wx.MAXIMIZE_BOX
        super(Frame, self).__init__(None, -1, 'Camera Viewer', style=style)

        my_sizer = wx.BoxSizer(wx.HORIZONTAL)

        campanel = HUDPanel(self)
        my_sizer.Add(campanel, 0, wx.ALL | wx.CENTER, 5)

        widgetpanel = ExtraPanel(self)
        my_sizer.Add(widgetpanel, 0, wx.ALL | wx.CENTER, 5)

        self.SetSizer(my_sizer)


        self.Fit()


def main():
    app = wx.App()
    frame = Frame()

    frame.Show()
    app.MainLoop()


if __name__ == '__main__':
    main()