我有一個叫做self.grid
的FlexGridSizer,有五列,每行有兩個TextCtrl的一對RadioButton和一個CheckBox。檢索與這些對象相關的數據的最佳方法是什麼?目前,我成功地利用在wxPython中訪問FlexGridSizer中項目的正確方法?
# get flat list of all items in flexgridsizer, self.grid
children = list(self.grid.GetChildren())
# change list into list of rows (5 items each)
table = [children[i:i+5] for i in range(0, len(children), 5)]
# parse list of 'sizeritems' to extract content
for x in range(len(table)):
for y in range(len(table[x])):
widget = table[x][y].GetWindow()
if isinstance(widget, wx.TextCtrl):
text = ""
for num in range(widget.GetNumberOfLines()):
text += widget.GetLineText(num)
table[x][y] = text
if isinstance(widget, wx.RadioButton):
table[x][y] = widget.GetValue()
if isinstance(widget, wx.CheckBox):
table[x][y] = (widget.GetLabel(), widget.GetValue())
這給我留下了table
,行的每個五行,每一個項目是相關數據的列表:文本TextCtrl,布爾的單選按鈕,和(標籤,布爾)的複選框。 這似乎完成了工作,但它不感覺沒錯。
有沒有更好的方法從FlexGridSizer恢復數據?另外,我應該爲這個佈局使用不同的尺寸/控制器嗎? (我試過UltimateListCtrl,但它是越野車/並沒有真正做我所需要的)。
只是出於好奇,爲什麼你檢索你的'''TextCtrl'''這樣的價值呢? '''GetValue()'''有什麼問題? – wnnmaw
謝謝,我應該使用'GetValue()',但我的錯誤印象是我必須這樣做,因爲它是一個多行TextCtrl,因爲我只查看這個[文檔頁面上的方法](http://wxpython.org/Phoenix/docs/html/TextCtrl.html)。 – mark