Pyqt5:如何在不使用 QFont 的情况下格式化文本?

pun*_*her 3 python pyqt5

正如标题已经说明的那样,我想简单地格式化文本而不使用QFont(). 目前我正在这样使用它:

font = QFont()
font.setBold(True)

label = QLabel()
label.setFont(font)
label.setText("Hello World!")
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。但是,如果我想在标签文本中的某个部分加粗,这会变得非常烦人,因为我必须创建一个额外的部分QLabel并使用setBold()并将该部分放在正确的位置。有没有办法(例如降价)将标签文本的特定部分加粗?

像那样:

label = QLabel()
label.setText("**Hello** World!")
Run Code Online (Sandbox Code Playgroud)

ypn*_*nos 5

Qt 使用 HTML 的子集来实现富文本。这也是默认设置。尝试:

label.setText("<b>Hello</b> World!")
Run Code Online (Sandbox Code Playgroud)

标签文本格式由属性控制textFormat。默认值为 Auto,有关可能的值,请参阅https://doc.qt.io/qt-5/qt.html#TextFormat-enum

如果您使用最新版本的 Qt(至少 5.14),您也可以按照您的建议使用 Markdown:

label.setTextFormat(Qt.MarkdownText)
label.setText("**Hello** World!")
Run Code Online (Sandbox Code Playgroud)

参考: https: //doc.qt.io/qt-5/richtext-html-subset.html