我有一个从数据库中检索到的客户列表及其ID。 我想将它们添加到wxComboBox中,当它们被选中时,检索id而不是选项文本。客户端已按字母顺序排序,因此ID不按顺序排列。
我试过以下
clients = get_client_list()
for client in clients:
self.client_comboBox.Append(client.name, client.id)
这不起作用。 我也尝试过使用
getSelection()
但这只是给我下拉列表中的选项位置。 我需要做的是检索所选选项的ID。
有什么想法吗?
答案 0 :(得分:0)
一个简单的解决方法是构建要附加的项目,其中包含一个分隔符,选择后可以轻松split
。
如果您将项目构造为client_id + tab + client_name,则只需分割所选字符串即可获得客户端ID。
import wx
class Myframe(wx.Frame):
def __init__(self):
self.count = 0
wx.Frame.__init__(self, None)
clients = ["Joe Bloggs","Arthur C Goggins","Gary Sable"]
client_ids = ["10001","00326","51001"]
self.panel = wx.Panel(self)
self.cbx = wx.ComboBox(self.panel, -1, value="Choose an Option", pos=(10,30), size=(300,30),choices="")
for item in range(len(clients)):
self.cbx.Append(client_ids[item]+"\t"+clients[item])
self.cbx.Bind(wx.EVT_COMBOBOX, self.on_selection)
self.txt1 = wx.TextCtrl(self.panel, -1, "Selected Value", pos=(10,200), size=(300,30))
self.txt2 = wx.TextCtrl(self.panel, -1, "Selected Selection", pos=(10,230), size=(300,30))
self.txt3 = wx.TextCtrl(self.panel, -1, "Selected String", pos=(10,260), size=(300,30))
self.txt4 = wx.TextCtrl(self.panel, -1, "Selected Id", pos=(10,290), size=(300,30))
def on_selection(self, evt):
Choice = self.cbx.GetValue()
self.txt1.SetValue(Choice)
Choice = self.cbx.GetSelection()
self.txt2.SetValue(str(Choice))
Choice = self.cbx.GetStringSelection()
self.txt3.SetValue(Choice)
Id = Choice.split("\t",1)[0]
self.txt4.SetValue(Id)
if __name__ == "__main__":
App = wx.App()
Myframe().Show()
App.MainLoop()