有一个更简单的方法。您可以向文本控件传递一个唯一的名称,并使用它来更新它们。我提供了一个简单的示例,其中我更新了下面的前两个控件:import wx
########################################################################
class MyPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
sizer = wx.BoxSizer(wx.VERTICAL)
ticker_items = ['bid', 'ask', 'open', 'close', 'high', 'low']
for item in ticker_items:
sizer.Add(wx.TextCtrl(self, value=item, size=(-1, -1), name=item) )
btn = wx.Button(self, label="Update")
btn.Bind(wx.EVT_BUTTON, self.updateTextCtrls)
sizer.Add(btn)
self.SetSizer(sizer)
#----------------------------------------------------------------------
def updateTextCtrls(self, event):
""""""
txtCtrls = [widget for widget in self.GetChildren() if isinstance(widget, wx.TextCtrl)]
for ctrl in txtCtrls:
if ctrl.GetName() == "bid":
ctrl.SetValue("$100")
elif ctrl.GetName() == "ask":
ctrl.SetValue("$500")
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="TextCtrl Tutorial")
panel = MyPanel(self)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = MainFrame()
app.MainLoop()
创建对文本控件的引用的唯一方法是使用ikaros45提到的setattr方法。在