我试图在运行时向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()
答案 0 :(得分:0)
这个问题是由多线程引起的;见上面的评论。我已经能够通过使用这里提到的技术“切换”向主线程添加复选框:< Sharing data between threads in Python>。
虽然,这里建议一种更好的,线程安全的方法来构建我的程序:< WxPython: Periodically set value in TextCtrl not working>。还有一种方法可以避免使用多个线程。