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

时间:2015-01-06 21:30:35

标签: python python-2.7 checkbox wxpython runtime

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

我试过关注帖子< Add checkbox in wxPython in runtime>,但无法让它发挥作用。我还使用了wxFormBuilder来看看它在初始化期间如何添加一个复选框;我能够验证self.mainWindow.p_SelectionPanel是我想要添加复选框的位置。我还检查了调试器,以确保代码的每一行至少运行一次。

关于应用程序的更多背景知识:它是一个wxPython GUI,其中嵌入了matplotlib图。我试图从传入的串行端口流生成复选框,以便用户可以在运行时显示/隐藏系列。 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()

1 个答案:

答案 0 :(得分:0)

这个问题是由多线程引起的;见上面的评论。我已经能够通过使用这里提到的技术“切换”向主线程添加复选框:< Sharing data between threads in Python>。

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