Не може да се добави квадратче за отметка към GUI на wxpython по време на изпълнение

Опитвам се да добавя квадратчета за отметка към wxpython gui по време на изпълнение, но изглежда не се показва. Моят код е по-долу.

Опитах да следвам публикацията ‹ Добавяне на квадратче за отметка в wxPython по време на изпълнение >, но не успя да го накара да работи. Използвах също wxFormBuilder, за да видя как добавя квадратче за отметка по време на инициализация; Успях да потвърдя, че self.mainWindow.p_SelectionPanel е мястото, където искам да добавя квадратчето за отметка. Също така проверих с дебъгера, за да се уверя, че всеки ред от кода се изпълнява поне веднъж.

Малко повече информация за приложението: това е GUI на wxPython с вграден в него график на 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()

person apandit    schedule 06.01.2015    source източник
comment
извикайте Layout на mainWindow, тъй като размерът му може да се е променил   -  person stark    schedule 07.01.2015
comment
Благодаря за предложението stark! Опитах това, но квадратчето за отметка не се показва в GUI. Мисля, че проблемът може да е, че използвам две нишки: основната нишка и нишка за управление на извличането на серийни данни/актуализацията на графиката. Ще проуча допълнително...   -  person apandit    schedule 09.01.2015
comment
Не съм сигурен за wx, но в tk всички GUI операции трябва да са в една нишка. Като цяло няма причина GUI да се прави многонишков.   -  person stark    schedule 09.01.2015


Отговори (1)


Този проблем се дължи на използването на множество нишки; вижте коментарите по-горе. Успях да „предам“ добавянето на квадратчета за отметка към основната нишка, като използвах техниките, разгледани тук: ‹ Споделяне на данни между нишки в Python >.

Тук обаче се предлага по-добър, безопасен за нишки начин за структуриране на програмата ми: ‹ WxPython: Периодично зададената стойност в TextCtrl не работи >. Има и начин, който избягва използването на множество отбелязани нишки.

person apandit    schedule 11.01.2015