在 PyQt4 中更改文本比较后的颜色结果
Change the color result of text after being compared in PyQt4
我有一个非常简单的问题,我想弄明白为什么它不起作用。
基本上我试图打印出我的比较函数的结果和不匹配的不同颜色的结果。\
这是我的代码示例:
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 nameData[k] == 'ESS':
# print 'ESS found'
# elif nameData[k] != 'ESS':
if nameData[k] != correct_parameters[k]:
tabLabel.append('{} = {}'.format(k, nameData[k]))
tabLabel.setStyleSheet('color: black')
fdout.write('\t' + '|' + '{} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n')
print ('{} = {}'.format(k, nameData[k]))
elif nameData[k] == correct_parameters[k]:
tabLabel.append('{} = {}'.format(k, nameData[k]))
tabLabel.setStyleSheet('color: red')
fdout.write('\t' + '|' + '{} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n')
print ('{} = {}'.format(k, nameData[k]))
tabLayout = QtGui.QVBoxLayout()
tabLayout.addWidget(tabLabel)
tabWidget.setLayout(tabLayout)
self.tabWidget.addTab(tabWidget, tabName)
我希望匹配 ==
的文本结果为红色,不匹配的结果为黑色 !=
但是我相信循环正在用第二个覆盖结果elif
所以我的结果只显示为红色,没有显示 !=
结果。
我的代码所做的是比较两个包含一系列数据和参数的文本文档。一旦程序比较了两个文件,它将输出任何不同的结果,例如,如果在主文件(正确文件)dog = 6
和另一个文件(不正确文件)dog = 9
中,它将打印出 dog = 9
如 "Hey look dog in your other file is incorrect please fix it"
目前,我的代码按照预期的方式运行,并向我的结果打印出不正确的值,但是我只想对其进行格式化,使其具有不正确的值和正确的值。我怎样才能正确地涂上我的结果?
这是我试图实现的目标的直观表示:如您所见,鼠标为黑色,因为它不正确,结果为红色,因为它是正确的。
使用 tabLabel.setStyleSheet('color: red')
您正在更改整个 QTextEdit
的 css:您定义所有文本,即使是以前写的,也将是红色的。
要更改文本的颜色,只需在写入前调用setTextColor(QtGui.QColor)
即可。
例如:
self.text=QtGui.QTextEdit()
self.text.setTextColor(QtGui.QColor("blue"))
self.text.append("I'm blue !")
self.text.setTextColor(QtGui.QColor("red"))
self.text.append("I'm red !")
我有一个非常简单的问题,我想弄明白为什么它不起作用。
基本上我试图打印出我的比较函数的结果和不匹配的不同颜色的结果。\
这是我的代码示例:
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 nameData[k] == 'ESS':
# print 'ESS found'
# elif nameData[k] != 'ESS':
if nameData[k] != correct_parameters[k]:
tabLabel.append('{} = {}'.format(k, nameData[k]))
tabLabel.setStyleSheet('color: black')
fdout.write('\t' + '|' + '{} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n')
print ('{} = {}'.format(k, nameData[k]))
elif nameData[k] == correct_parameters[k]:
tabLabel.append('{} = {}'.format(k, nameData[k]))
tabLabel.setStyleSheet('color: red')
fdout.write('\t' + '|' + '{} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n')
print ('{} = {}'.format(k, nameData[k]))
tabLayout = QtGui.QVBoxLayout()
tabLayout.addWidget(tabLabel)
tabWidget.setLayout(tabLayout)
self.tabWidget.addTab(tabWidget, tabName)
我希望匹配 ==
的文本结果为红色,不匹配的结果为黑色 !=
但是我相信循环正在用第二个覆盖结果elif
所以我的结果只显示为红色,没有显示 !=
结果。
我的代码所做的是比较两个包含一系列数据和参数的文本文档。一旦程序比较了两个文件,它将输出任何不同的结果,例如,如果在主文件(正确文件)dog = 6
和另一个文件(不正确文件)dog = 9
中,它将打印出 dog = 9
如 "Hey look dog in your other file is incorrect please fix it"
目前,我的代码按照预期的方式运行,并向我的结果打印出不正确的值,但是我只想对其进行格式化,使其具有不正确的值和正确的值。我怎样才能正确地涂上我的结果?
这是我试图实现的目标的直观表示:如您所见,鼠标为黑色,因为它不正确,结果为红色,因为它是正确的。
使用 tabLabel.setStyleSheet('color: red')
您正在更改整个 QTextEdit
的 css:您定义所有文本,即使是以前写的,也将是红色的。
要更改文本的颜色,只需在写入前调用setTextColor(QtGui.QColor)
即可。
例如:
self.text=QtGui.QTextEdit()
self.text.setTextColor(QtGui.QColor("blue"))
self.text.append("I'm blue !")
self.text.setTextColor(QtGui.QColor("red"))
self.text.append("I'm red !")