标签:__ .__ dict1 python self 多级 value 嵌套 wx
# -*- coding: UTF-8 -*- import wx class ComboBoxFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, 'Combo Box Example', size=(1300, 750)) panel = wx.Panel(self, -1) dict1 = { u'甘肃': [u'张掖', u'武威'], u'江苏': [u'南通', u'南京'] } dict2 = { u'张掖': [u'高台', u'肃南'], u'武威': [u'古浪', u'民勤'], u'南通': [u'海门县', u'海安县'], u'南京': [u'玄武区', u'朱雀区'] } proviceLable = wx.StaticText(panel, -1, "省份:", pos=(80, 60)) # 省份的静态说明文本框 proviceComboBox = wx.ComboBox(panel, -1, value=list(dict1.keys())[0], choices=list(dict1.keys()), style=wx.CB_READONLY, pos=(170, 55)) # 省份的下拉文本框 cityLable = wx.StaticText(panel, -1, "市区:", pos=(80, 120)) # 市区~ shiquComboBox = wx.ComboBox(panel, -1, value=dict1[list(dict1.keys())[0]][0], choices=dict1[list(dict1.keys())[0]], style=wx.CB_READONLY, pos=(170, 115)) # 市区~ value1 = dict1[list(dict1.keys())[0]][0] # 这个变量用于得到省份字典的第一个key值所对应的value值,主要用于对县级下拉列表的初始化 xianquLable = wx.StaticText(panel, -1, "县区:", pos=(80,180)) # 县区~ xianquComboBox = wx.ComboBox(panel, -1, value=dict2[value1][0], choices=dict2[value1], style=wx.CB_READONLY, pos=(170, 175)) # 县区~ # 定义一级列表被点击时响应二级列表和三级列表的刷新事件 self.__ProvinceComboBox = proviceComboBox self.__SecityDict = dict1 self.__CityComboBox = shiquComboBox panel.Bind(wx.EVT_COMBOBOX, self.__OnComboBoxSelected1, proviceComboBox, ) # 定义二级列表被点击时响应三级列表的刷新事件 self.__SecityDict1 = dict2 self._XianquCombobox = xianquComboBox panel.Bind(wx.EVT_COMBOBOX, self.__OnComboBoxSelected2, shiquComboBox, ) # 定义三级列表被点击时响应的事件 panel.Bind(wx.EVT_COMBOBOX, self.__OnComboBoxSelected3, xianquComboBox, ) def __OnComboBoxSelected(self, event): currentProvinceIndex = self.__ProvinceComboBox.GetSelection() if wx.NOT_FOUND == currentProvinceIndex: return value = self.__ProvinceComboBox.GetItems()[currentProvinceIndex] # 注意中文在List dict 等存储时候, utf-8 格式不一致问题 value = value.encode('utf-8') cityList = self.__SecityDict[value] self.__CityComboBox.SetItems(cityList) self.__CityComboBox.SetValue(cityList[0]) def __OnComboBoxSelected1(self, event): # 省份列表点击的响应函数 currentProvinceIndex1 = self.__ProvinceComboBox.GetSelection() print currentProvinceIndex1 if wx.NOT_FOUND == currentProvinceIndex1: return value1 = self.__ProvinceComboBox.GetItems()[currentProvinceIndex1] print self.__SecityDict[value1] cityList = self.__SecityDict[value1] self.__CityComboBox.SetItems(cityList) self.__CityComboBox.SetValue(cityList[0]) self.__OnComboBoxSelected2(self) def __OnComboBoxSelected2(self, event): # 市区列表点击的响应函数 currentShiquIndex = self.__CityComboBox.GetSelection() if wx.NOT_FOUND == currentShiquIndex: return value = self.__CityComboBox.GetItems()[currentShiquIndex] cityList = self.__SecityDict1[value] self._XianquCombobox.SetItems(cityList) self._XianquCombobox.SetValue(cityList[0]) def __OnComboBoxSelected3(self, event): # 响应县区下拉文本框点击的响应函数 currentXianquIndex = self._XianquCombobox.GetSelection() value = self._XianquCombobox.GetItems()[currentXianquIndex] self._cityname = value def main(): app = wx.PySimpleApp() ComboBoxFrame().Show() app.MainLoop() if __name__ == '__main__': main()
标签:__,.__,dict1,python,self,多级,value,嵌套,wx 来源: https://www.cnblogs.com/dengyanchuan/p/13043972.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。