Есть ли способ, с помощью кнопки, повторно инициализировать конкретную панель? У меня есть раздел приложения, который ищет определенные файлы в ОС, а затем создает некоторые флажки и textctrls, а затем динамически добавляет их в классификатор:
for db in numDB:
if xIndex >= 12:
pass
xIndex += 1
else:
check = wx.CheckBox(self, -1, db)
sizer.Add(check, pos=(xIndex,0), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=10)
label = wx.StaticText(panel, label="")
sizer.Add(label, pos=(xIndex,1), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=10)
name = wx.TextCtrl(panel)
#Set Temp Name
if db.endswith('.db'):
name.Value = db[:-3]
sizer.Add(name, pos=(xIndex,2), span=(1,3),flag=wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, border=10)
xIndex +=1
У меня есть кнопка обновления, если пользователь добавляет новую БД или удаляет ее. По крайней мере, для меня самая простая концепция - попытаться найти способ перезапустить init .
.
Я пытаюсь сослаться на init :
def onRefreshClick(self, event):
self.__init__
Это определение происходит внутри самого класса, но, похоже, ничего не делает. И я совершенно новичок во всем wxPython и Python в целом, так что, возможно, это нечто простое, что я не могу понять.
Отредактировано, чтобы попытаться включить super ():
class LaunchPanel(wx.Panel):
"""
Launch Tab for finding and launching .db files
"""
#----------------------------------------------------------------------
def __init__(self, parent):
""""""
wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY)
super (LaunchPanel)
self.initialize()
def initialize(self):
panel = self
sizer = wx.GridBagSizer(11, 3)
<snip...>
В результате моя панель пуста. Когда я нажимаю кнопку обновить, он добавляет (я думаю) все мои элементы в верхнюю левую часть панели ...? Я уверен, что это легко, что бы я не делал ...?