使用 ID 获取 TextCtrl 值

Get TextCtrl value using ID

这就是我像往常一样在 ScrollView 中初始化多个 TextCtrls 的方式,我在一个循环中所以我只能跟踪 ID。

for value in data:
  voteheadcode = value[0]
  self.text = wx.TextCtrl(self.votehead_ScrollView, int(voteheadcode), wx.EmptyString, 
  wx.DefaultPosition, wx.Size(400, -1), 0)
  horizontal_Scroll_BoxSizer.Add(self.text, 0, wx.ALL, 5)

如何仅使用输入的 ID 获取输入的值?在这种情况下 voteheadcode,通常我们会

self.text.GetValue()

但这在这里行不通,我想仅使用 id 获取 TextValue。

您可以将每个 wx.TextCtrl 存储在列表中,然后访问列表的项目以获取值,而不是这样做:

self.text = []
for value in data:
  voteheadcode = value[0]
  self.text.append(wx.TextCtrl(self.votehead_ScrollView, int(voteheadcode), wx.EmptyString, wx.DefaultPosition, wx.Size(400, -1), 0))
  horizontal_Scroll_BoxSizer.Add(self.text, 0, wx.ALL, 5)

那么你可以这样做:

self.text["the item you want's index"].GetValue()

或者当您创建它们时,您可以像这样绑定它们:

self.Bind(wx.EVT_TEXT_ENTER, self.OnEnterText)

def OnEnterTex(self, event):

    control_id = event.GetId()
    control = wx.FindItemById(control_id, self)
    value = control.GetValue()
    

这样你就可以将值存储在你想要的地方或打印它