2016-03-08 47 views
0

我的wxPython应用程序有一个带有CheckListBox的窗口,该窗口显示MySQL数据库中保存的所有项目。对于选定的员工,他们参与的项目应打勾。我试图用打勾的框: -从MySQL查询设置CheckListBox

indices = [i for i in range(len(lst)) if lst[i][0] in prjs] 
self.checkListBox1.SetChecked(indices) 

其中LST如下图所示的cursor.fetchall()返回的所有项目的列表: -

地表温度>((3L“ (2L,'Diabetes'),(6L,'Exercise'),(5L,'Thyroid'),(4L,'Weight/BMI'))<

和prjs项目中参与雇员: -

prjs是>((2L,),(3L),(6L))<

设置索引失败,因为返回的是元组而非值。我显然可以'捣碎'prjs以正确的格式获得它,但是在MySQL返回中还是在设置索引中,是否有更优雅的解决方案?

回答

0

几个小时后,我设法让它排序。我第一次尝试将prjs从((2L,),(3L,),(6L,))转换为(2L,3L,6L)失败,因为当我尝试匹配整数时,它以字符串结尾。

钻研多一些对列表(Python的列表和字典是不是我的强项)后,我想出了: -

prjs = [e for e, in row] 

其中e是元组和行的第一个元素的结果是: -

sql = "SELECT ProjectMembership.idProjectGroup FROM ProjectMembership \ 
    WHERE ProjectMembership.idPersonnel = " + str(PersonnelNo) 
cursor.execute(sql) 
row = cursor.fetchall()