1 回答
TA贡献1829条经验 获得超7个赞
每个 QTextBlock 可以包含多个 QTextCharFormat,所以你不能使用block.charFormat.
一种可能的解决方案是对所有字母的每个块循环使用 QTextCursor。
请注意,QTextBlock 也作为一个迭代器,因此您可以从第一个块开始,然后使用它block.next()来获取下一个块,只要block.isValid()返回 True。
def print(self):
document = self.textEdit.document()
block = document.firstBlock()
while block.isValid():
cursor = QtGui.QTextCursor(block)
text = block.text()
for l in range(block.length() - 1):
charFormat = cursor.charFormat()
size = charFormat.font().pointSize()
if size < 0:
size = document.defaultFont().pointSize()
print('{letter} Bold: {bold}, Italic: {italic}, Size: {size}'.format(
letter = text[l],
bold = charFormat.fontWeight() > 50,
italic = charFormat.fontItalic(),
size = size
))
cursor.movePosition(cursor.Right)
block = block.next()
添加回答
举报