wxPythonで、ラジオボタンのリストを作成して最初にリストを配置した場合、そのリストの内容を後で変更することはできますか?
たとえば、ウィジェットを最初に配置するために boxSizer を使用するパネルがあります。これらのウィジェットの 1 つは、ラジオ ボタンのリストです (通常のラジオ ボックスも試しました)。別のクラスの変数に基づいてリストを動的に変更したいと思います。
ただし、リストがサイザーに配置されると、事実上「ロック」されます。リストを変更して変更を表示させることはできません。リストをサイザーに再度追加しようとすると、パネルの左上隅に配置されます。
元のリストを非表示にして、新しいリストを手動で同じ位置に配置できると確信していますが、それは面倒なように感じます。私はこれをそれよりも難しくしていると確信しています。私はおそらくこれに間違ったウィジェットを使用しており、ましてや間違ったアプローチではありませんが、学習経験としてこれを構築しています。
class Job(wiz.WizardPageSimple):
"""Character's job class."""
def __init__(self, parent, title, attribs):
wiz.WizardPageSimple.__init__(self, parent)
self.next = self.prev = None
self.sizer = makePageTitle(self, title)
self.charAttribs = attribs
#---Create widgets
self.Job_list = ["Aircraft Mechanic", "Vehicle Mechanic", "Electronics Specialist"]
box1_title = wx.StaticBox( self, -1, "" )
box1 = wx.StaticBoxSizer( box1_title, wx.VERTICAL )
grid1 = wx.BoxSizer(wx.VERTICAL)
for item in self.Job_list:
radio = wx.RadioButton(self, -1, item)
grid1.Add(radio)
##Debugging
self.btn = wx.Button(self, -1, "click")
self.Bind(wx.EVT_BUTTON, self.eligibleJob, self.btn)
#---Place widgets
self.sizer.Add(self.Job_intro)
self.sizer.Add(self.btn)
box1.Add(grid1)
self.sizer.Add(box1)
def eligibleJob(self, event):
"""Determine which Jobs a character is eligible for."""
if self.charAttribs.intelligence >= 12:
skillList = ["Analyst", "Interrogator", "Fire Specialist", "Aircraft Pilot"]
for skill in skillList:
self.Job_list.append(skill)
print self.Job_list ##Debugging
#return self.Job_list