无法在运行时将复选框添加到 wxpython GUI

Unable to add checkbox to wxpython GUI during runtime

我试图在运行时向 wxpython gui 添加复选框,但它似乎没有显示出来。我的代码如下。

我已尝试遵循 post < Add checkbox in wxPython in runtime >,但无法使其正常工作。我还使用 wxFormBuilder 来查看它如何在初始化期间添加一个复选框;我能够验证 self.mainWindow.p_SelectionPanel 是我要添加复选框的地方。我还检查了调试器以确保每一行代码至少运行一次。

关于该应用程序的更多背景知识:它是一个 wxPython GUI,其中嵌入了 matplotlib 图。我正在尝试从传入的串行端口流生成复选框,以便用户可以在运行时 show/hide 系列。 point是一个字典,键为系列名,系列值为字典值。

如果您需要更多背景信息,请告诉我。

在此先感谢您的帮助。

 def addNewCheckBoxes(self,point):
        sizer = self.mainWindow.p_SelectionPanel.GetSizer()
        addedCheckBox = False

        for key in point.keys():
            if key not in self.cbList.keys():
                self.cbList[key] = wx.CheckBox(self.mainWindow.p_SelectionPanel)
                sizer.Add(self.cbList[key])
                addedCheckBox = True

        if addedCheckBox:
            self.mainWindow.p_SelectionPanel.SetSizer(sizer)
            self.mainWindow.p_SelectionPanel.Layout()

这个问题是由使用多线程引起的;见上面的评论。我已经能够 "hand off" 通过使用此处介绍的技术向主线程添加复选框:< Sharing data between threads in Python >。

不过,这里建议使用一种更好的、线程安全的方法来构建我的程序:< WxPython: Periodically set value in TextCtrl not working >。还有一种方法可以避免使用多线程。