我正在尝试使用某种键值从PyQt中的程序对输出结果进行排序,然后打印出与该顺序对应的文本。
换句话说,我有这段代码:
with open(compareResults, 'wb') as fdout:
for index, tabName in enumerate(setNames):
tabWidget = QtGui.QWidget()
tabLabel = QtGui.QTextEdit()
print "Tab Name is :{}".format(tabName)
fdout.write('{}'.format(tabName) + '\r\n')
nameData = lst[index]
print 'name data = {}'.format(nameData)
for k in nameData:
if k in correct_parameters:
if nameData[k] != correct_parameters[k]:
tabLabel.setTextColor(QtGui.QColor("Red"))
tabLabel.append('This Parameter is Incorrect: {} = {}'.format(k, nameData[k]))
fdout.write('\t' + '|' + 'This Parameter is Incorrect: {} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n')
print ('{} = {}'.format(k, nameData[k]))
tabCounter+=1
elif nameData[k] == correct_parameters[k]:
tabLabel.setTextColor(QtGui.QColor("Black"))
tabLabel.append('{} = {}'.format(k, nameData[k]))
fdout.write('\t' + '|' + '{} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n')
print ('{} = {}'.format(k, nameData[k]))
else:
tabLabel.setTextColor(QtGui.QColor("Blue"))
tabLabel.append('{} = {} does not appear in our default'.format(k, nameData[k]))
fdout.write('\t' + '|' + '{} = {} does not appear in our default'.format(k, nameData[k]) + '\t' + '|' + '\r\n')
print ('{} = {} does not appear in our default'.format(k, nameData[k]))
tabCounter += 1
tabLayout = QtGui.QVBoxLayout()
tabLayout.addWidget(tabLabel)
tabWidget.setLayout(tabLayout)
self.tabWidget.addTab(tabWidget, tabName)
if tabCounter == 0:
print 'no change in tabs'
在这种情况下,程序逐行打印结果,目标是按nameData[k] != correct_parameters[k]
然后nameData[k] == correct_parameters[k]
然后else
}的顺序打印出行。 p>
所以我的想法是为这些行中的每一行分配一个键值,所以如果信息不正确,我可以指定键值0,如果行正确,键值为1,如果行似乎没有键值为2.然后我可以从0到2按数字顺序排序这些值。并将它们打印到即时创建的标签页。
到目前为止,我了解如何将keyvalue分配给我在这里遇到的三种不同情况,问题是按顺序创建一个带有键值的tabLabel.append
。
我正在考虑使用这个伪代码的内容: 对于存储值中的键值: 对于所有等于0打印的键 然后所有键等于1打印 然后所有键等于2打印。
虽然我不确定是否,而不是使用循环,我可以将每个结果存储到一个新的字典中,然后将这些键分配给字典中的值,并使用类似sorted(data.values())
的排序方法这个案例。然后排序打印出字典。