使用列表元素作为键创建窗口小部件字典

时间:2017-09-17 23:26:44

标签: python python-2.7 pyqt4

我正在创建一个GUI,我想访问我的一些小部件。由于他们很多,我想打电话给所有人并放入字典。我已经在字典dicA上了,我想使用相同的密钥,但有一些限制:

for row_nr in range(0,8):
    for cln_nr in range(0,8):
        self.current_Frame = self.gridLayout_10.itemAtPosition(row_nr, cln_nr)
        self.dicA[row_nr+1, cln_nr+1] = self.current_Frame


for keys in sorted(self.dicA.keys()):
    if keys[0] == 1 or keys[0] == 8  or keys[1] == 1 or keys[1] == 8:
        for info_nr in range(1, 29):
            self.info_names = 'info_'+str(info_nr)
            self.current_entry = self.Matrix.findChild(QtGui.QTextEdit, self.info_names)
            self.dicB[keys] = self.current_entry

最后我想要的是一个字典,其中包含与dicA相同的键作为键,但遵循这些限制,并与self.current_entry找到的每个小部件相关联。

但是当我运行这段代码时,我会按照自己的意愿获取密钥,但是它会将最后一个小部件info_28与所有密钥相关联。

第一本字典就像我想要的那样,但是第二本字典,我错过了什么?

2 个答案:

答案 0 :(得分:0)

将字符分配给字典后检查字典中是否存在密钥而不是跳过,否则将该密钥添加到字典

答案 1 :(得分:0)

我最终以更好的方式解决了这个问题。第一个dicA具有网格上的位置作为键。所以我做了以下

    for info_nr in range(1, 29):
                self.info_names = 'info_'+str(info_nr)
                self.current_entry = self.Matrix.findChild(QtGui.QTextEdit, self.info_names)
                idx = self.gridLayout_10.indexOf(self.current_entry)                    
                loc = self.gridLayout_10.getItemPosition(idx)
                self.dicB[loc[0], loc[1]] = self.current_entry