在wxPython中,如果我創建單選按鈕列表並最初放置列表,是否可以稍後更改列表中的內容?創建動態單選按鈕
例如,我有一個使用boxSizer最初放置小部件的面板。其中一個部件是單選按鈕列表(我也嘗試過一個普通的無線電框)。我想根據另一個類的變量動態地更改列表。
但是,一旦列表被放置在sizer中,它將被有效地「鎖定」;我不能只修改列表並使其顯示更改。如果我嘗試將列表重新添加到sizer中,它只會放在面板的左上角。
我敢肯定,我可以隱藏原始列表,並手動將新列表放置在相同的位置,但感覺就像一個kludge。我確信我比現在更難。我可能使用了錯誤的小部件,更不用說錯誤的方法,但我將其作爲學習體驗來構建。
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