drawText 有两个变量和每个不同的字体
drawText with two variables and each different font
我不知道是否可以为同一画家中的每个变量选择不同的文本字体。
painter.drawText(80, 290, self.text1.text() + self.text2.text())
这是示例:因为 text1
想保留它的默认值,因为我在画家 (boldUnderline
) 中设置了它,而 text2
将有 (boldUnderline
) 但是我还想将文本字体更改为另一种字体让我们说 Arial 重点是与 text1
不同,因为它应该使用不同的语言
完整代码如下:
underlineItalic = QFont()
underlineItalic.setItalic(True)
underlineItalic.setUnderline(True)
painter = QtGui.QPainter()
painter.setFont(boldUnderline)
painter.drawText(80, 290, self.text1.text() + self.text2.text())
是否可以通过这种方式执行此操作?
如果这样不行还有其他办法吗?
要执行此任务,您可以使用 QTextDocument
来设置我们使用的格式 QTextCharFormat()
,其中您必须设置字体。
doc = QTextDocument()
cursor = QTextCursor(doc)
fm = QTextCharFormat()
font = painter.font()
font.setBold(True)
font.setUnderline(True)
fm.setFont(font) # set QFont
cursor.insertText(text1, fm) # insert text with new format.
# establish new format for example:
# font.setItalic(True)
# font.setBold(True)
cursor.insertText(text1, fm)
painter.translate(80, 290)
doc.drawContents(painter)
示例:
if __name__ == '__main__':
app = QApplication(sys.argv)
img = QImage(640, 480, QImage.Format_RGB32);
img.fill(Qt.white);
text1, text2 ="Stack Overflow".split()
painter = QPainter(img);
doc = QTextDocument()
cursor = QTextCursor(doc)
fm = QTextCharFormat()
font = painter.font()
font.setItalic(True)
font.setUnderline(True)
fm.setFont(font)
cursor.insertText(text1, fm)
font.setItalic(True)
font.setBold(True)
font.setUnderline(False)
fm.setFont(font)
cursor.insertText(text2, fm)
painter.translate(80, 290)
doc.drawContents(painter)
painter.end();
img.save("text.png")
输出:
你也可以在QTextDocument中使用html:
if __name__ == '__main__':
app = QApplication(sys.argv)
img = QImage(640, 480, QImage.Format_RGB32);
img.fill(Qt.white);
text1, text2 ="Stack Overflow".split()
painter = QPainter(img);
doc = QTextDocument()
cursor = QTextCursor(doc)
cursor.insertHtml("<i><u>{first}</u></i><b><i>{second}<b></i>".format(first=text1, second=text2))
painter.translate(80, 290)
doc.drawContents(painter)
painter.end();
img.save("text.png")
我不知道是否可以为同一画家中的每个变量选择不同的文本字体。
painter.drawText(80, 290, self.text1.text() + self.text2.text())
这是示例:因为 text1
想保留它的默认值,因为我在画家 (boldUnderline
) 中设置了它,而 text2
将有 (boldUnderline
) 但是我还想将文本字体更改为另一种字体让我们说 Arial 重点是与 text1
不同,因为它应该使用不同的语言
完整代码如下:
underlineItalic = QFont()
underlineItalic.setItalic(True)
underlineItalic.setUnderline(True)
painter = QtGui.QPainter()
painter.setFont(boldUnderline)
painter.drawText(80, 290, self.text1.text() + self.text2.text())
是否可以通过这种方式执行此操作? 如果这样不行还有其他办法吗?
要执行此任务,您可以使用 QTextDocument
来设置我们使用的格式 QTextCharFormat()
,其中您必须设置字体。
doc = QTextDocument()
cursor = QTextCursor(doc)
fm = QTextCharFormat()
font = painter.font()
font.setBold(True)
font.setUnderline(True)
fm.setFont(font) # set QFont
cursor.insertText(text1, fm) # insert text with new format.
# establish new format for example:
# font.setItalic(True)
# font.setBold(True)
cursor.insertText(text1, fm)
painter.translate(80, 290)
doc.drawContents(painter)
示例:
if __name__ == '__main__':
app = QApplication(sys.argv)
img = QImage(640, 480, QImage.Format_RGB32);
img.fill(Qt.white);
text1, text2 ="Stack Overflow".split()
painter = QPainter(img);
doc = QTextDocument()
cursor = QTextCursor(doc)
fm = QTextCharFormat()
font = painter.font()
font.setItalic(True)
font.setUnderline(True)
fm.setFont(font)
cursor.insertText(text1, fm)
font.setItalic(True)
font.setBold(True)
font.setUnderline(False)
fm.setFont(font)
cursor.insertText(text2, fm)
painter.translate(80, 290)
doc.drawContents(painter)
painter.end();
img.save("text.png")
输出:
你也可以在QTextDocument中使用html:
if __name__ == '__main__':
app = QApplication(sys.argv)
img = QImage(640, 480, QImage.Format_RGB32);
img.fill(Qt.white);
text1, text2 ="Stack Overflow".split()
painter = QPainter(img);
doc = QTextDocument()
cursor = QTextCursor(doc)
cursor.insertHtml("<i><u>{first}</u></i><b><i>{second}<b></i>".format(first=text1, second=text2))
painter.translate(80, 290)
doc.drawContents(painter)
painter.end();
img.save("text.png")