方法一:
textedit对部分字体颜色进行修改,需要先获取游标位置,再通过HTML的span样式style对颜色的颜色进行设置,将设置好颜色的HTML代码再插入回原位置。代码如下:
def chioce_color(self):
color = QColorDialog.getColor()
select_text = self.input_text.textCursor()
if color.isValid():
self.color.setStyleSheet("background-color:{}".format(color.name())) # 颜色设置按钮的背景颜色
print('选中内容:', select_text.insertHtml( '<p><span style="color: {}">{}</span></p>'.format(color.name(), select_text.selectedText())))
从颜色对话框中获取的颜色对象如下:
PySide6.QtGui.QColor.fromRgbF(0.000000, 1.000000, 0.000000, 1.000000)
color.name() 将颜色对象转换为16进制形式
方法二:
通过获取当前文本的字符串格式,然后再将设置的颜色格式追加至原有的格式中。核心代码如下:
select_text = self.input_text.textCursor() # 获取当前光标位置
text_format = self.input_text.currentCharFormat() # 获取当前字文本的字符串格式
text_format.setForeground(QBrush(QColor(color))) # 设置字体颜色
select_text.mergeCharFormat(text_format) # 追加格式到原有文本
总结:
方法一采用的HTML的方式,该方法对专门设置颜色没有问题,如果选取的文本的字体大小及字体不是默认值,则会对已设置的字体格式恢复成默认设置,再改变字体的颜色。
方法二是利用QTextCharFormat模块功能,先直接获取了字符串的当前格式,然后再将设置的颜色格式追加到原有的格式中。推荐用这种方法设置。