1 回答

TA貢獻1829條經(jīng)驗 獲得超7個贊
每個 QTextBlock 可以包含多個 QTextCharFormat,所以你不能使用block.charFormat.
一種可能的解決方案是對所有字母的每個塊循環(huán)使用 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()
添加回答
舉報