我的wxPython应用程序有一个带有CheckListBox的窗口,该窗口显示MySQL数据库中保存的所有项目。对于选定的员工,应选中他们所参与的项目。我正在尝试使用以下方法在方框中打勾

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


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

lst为>((3L,'血压'),(1L,'胆固醇'),(2L,'糖尿病'),(6L,'运动'),(5L,'甲状腺'),(4L,'体重/ BMI'))<

prjs员工参与的项目:-

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

设置索引失败,因为返回的是元组而不是值。我显然可以“混搭” prjs以正确的格式获取它,但是在MySQL返回值或设置索引中是否有更优雅的解决方案?

最佳答案

几个小时后,我设法将其排序。我第一次尝试将prjs从((2L,),(3L,),(6L,))转换为(2L,3L,6L)失败,因为当我尝试对整数进行匹配时,它最终以字符串形式出现。

在深入研究列表之后(Python列表和字典不是我的强项),我想到了:

prjs = [e for e, in row]


其中e是元组的第一个元素,而row是以下结果:

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

关于python - 从MySQL查询设置CheckListBox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35867780/

10-10 06:55