字典迭代中的 PyQt5 文本颜色
PyQt5 Text Color in Dictionary Iteration
我已经搜索了一段时间,但似乎找不到如何最好地处理 PyQt5 中字体颜色的问题的好答案。我发现的是带有很多很多选项的大型样式表。看起来很笨重,但也许这就是QT。
假设我有这样的代码:
for k, v in do_something.items():
self.textBrowser.setStyleSheet("fontName='Times-Italic'")
self.textBrowser.setStyleSheet("color: rgb(244,0,0)")
self.textBrowser.append(str(k) + ': ' + str(v))
我怎样才能让 k 和 v 变成不同的颜色,而不需要换行符。我想要一个红色 "k",一个冒号,然后是一个白色 "v"。在终端中,这是相当微不足道的;我会为颜色添加一些值,然后这样调用它们:
color_red2_on = "3[01;31m"
color_red2_off = "[00m"
for k, v in do_something.items():
print(color_red2_on + '{:45}'.format(k) + color_red2_off + ':' + '{0}'.format(v))
此外,从更广泛的角度来看,我并没有真正找到很多关于使用 QT 进行文本定位的指导,比如诅咒或你有什么。我发现的大多数教程似乎只关注如何创建各种小部件并连接它们,而不是如何处理它们的外观或行为。
QTextBrowser 是 QTextEdit 的固有 class 支持 Html 和 css2.1,因此您可以按以下示例所示使用它。
import sys
from PyQt5 import QtCore, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
QtWidgets.QWidget.__init__(self, *args, **kwargs)
lay = QtWidgets.QVBoxLayout(self)
self.textBrowser = QtWidgets.QTextBrowser()
lay.addWidget(self.textBrowser)
do_something = {"A": "A", "B": "B"}
cursor = self.textBrowser.textCursor()
for k, v in do_something.items():
cursor.insertHtml('''<p><span style="color: red; font-family:Times; font-style: italic;">{}</span>'''.format(k))
cursor.insertHtml(''':''')
cursor.insertHtml('''<span style="color: blue; font-family:Times; font-style: italic;">{}</span></p>'''.format(v))
cursor.insertHtml("<br>")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
要以简单的方式完成,您可以附上样式表。
import sys
from PyQt5 import QtCore, QtWidgets
css = '''
.left{
color: red;
font-family:Times;
font-style: italic;
}
.right{
color: blue;
font-family:Times;
font-style: italic;
}
'''
class Widget(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
QtWidgets.QWidget.__init__(self, *args, **kwargs)
lay = QtWidgets.QVBoxLayout(self)
self.textBrowser = QtWidgets.QTextBrowser()
lay.addWidget(self.textBrowser)
do_something = {"A": "A", "B": "B"}
cursor = self.textBrowser.textCursor()
doc = self.textBrowser.document()
doc.setDefaultStyleSheet(css)
for k, v in do_something.items():
cursor.insertHtml('''<p><span class='left'>{}</span>'''.format(k))
cursor.insertHtml(''':''')
cursor.insertHtml('''<span class='right'>{}</span></p>'''.format(v))
cursor.insertHtml("<br>")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
我已经搜索了一段时间,但似乎找不到如何最好地处理 PyQt5 中字体颜色的问题的好答案。我发现的是带有很多很多选项的大型样式表。看起来很笨重,但也许这就是QT。
假设我有这样的代码:
for k, v in do_something.items():
self.textBrowser.setStyleSheet("fontName='Times-Italic'")
self.textBrowser.setStyleSheet("color: rgb(244,0,0)")
self.textBrowser.append(str(k) + ': ' + str(v))
我怎样才能让 k 和 v 变成不同的颜色,而不需要换行符。我想要一个红色 "k",一个冒号,然后是一个白色 "v"。在终端中,这是相当微不足道的;我会为颜色添加一些值,然后这样调用它们:
color_red2_on = "3[01;31m"
color_red2_off = "[00m"
for k, v in do_something.items():
print(color_red2_on + '{:45}'.format(k) + color_red2_off + ':' + '{0}'.format(v))
此外,从更广泛的角度来看,我并没有真正找到很多关于使用 QT 进行文本定位的指导,比如诅咒或你有什么。我发现的大多数教程似乎只关注如何创建各种小部件并连接它们,而不是如何处理它们的外观或行为。
QTextBrowser 是 QTextEdit 的固有 class 支持 Html 和 css2.1,因此您可以按以下示例所示使用它。
import sys
from PyQt5 import QtCore, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
QtWidgets.QWidget.__init__(self, *args, **kwargs)
lay = QtWidgets.QVBoxLayout(self)
self.textBrowser = QtWidgets.QTextBrowser()
lay.addWidget(self.textBrowser)
do_something = {"A": "A", "B": "B"}
cursor = self.textBrowser.textCursor()
for k, v in do_something.items():
cursor.insertHtml('''<p><span style="color: red; font-family:Times; font-style: italic;">{}</span>'''.format(k))
cursor.insertHtml(''':''')
cursor.insertHtml('''<span style="color: blue; font-family:Times; font-style: italic;">{}</span></p>'''.format(v))
cursor.insertHtml("<br>")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
要以简单的方式完成,您可以附上样式表。
import sys
from PyQt5 import QtCore, QtWidgets
css = '''
.left{
color: red;
font-family:Times;
font-style: italic;
}
.right{
color: blue;
font-family:Times;
font-style: italic;
}
'''
class Widget(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
QtWidgets.QWidget.__init__(self, *args, **kwargs)
lay = QtWidgets.QVBoxLayout(self)
self.textBrowser = QtWidgets.QTextBrowser()
lay.addWidget(self.textBrowser)
do_something = {"A": "A", "B": "B"}
cursor = self.textBrowser.textCursor()
doc = self.textBrowser.document()
doc.setDefaultStyleSheet(css)
for k, v in do_something.items():
cursor.insertHtml('''<p><span class='left'>{}</span>'''.format(k))
cursor.insertHtml(''':''')
cursor.insertHtml('''<span class='right'>{}</span></p>'''.format(v))
cursor.insertHtml("<br>")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())