Python PySide,;如何设置QMessageBox文本格式?

Python PySide,;如何设置QMessageBox文本格式?,python,pyside,Python,Pyside,我想设置QMessageBox文本格式,但找不到有效的方法 QtGui.QMessageBox.information( self, "Confirm delete!", "Are you sure you want to delete file?\n %s" % filename, QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No ) 我想大胆一点,比如: "Are

我想设置QMessageBox文本格式,但找不到有效的方法

QtGui.QMessageBox.information(
    self, 
    "Confirm delete!", 
    "Are you sure you want to delete file?\n %s" % filename,
    QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
    QtGui.QMessageBox.No
)
我想大胆一点,比如:

"Are you sure you want to delete file?\n <b>%s</b>"
“确实要删除文件吗?\n%s”

如何执行此操作?

根据PySide的文档,您可以使用来指定
Qt.RichText
格式

但是,这仅在创建自定义
QMessageBox
实例并进行设置时有效,在使用
QMessageBox.information
静态方法时无效

默认情况下,
QMessageBox
使用
Qt.AutoText
格式,该格式尝试通过使用函数检测文本是否为富文本(我只能找到Qt的文档)。该功能的文档说明:

如果字符串文本可能是富文本,则返回true;否则 返回false

此函数使用一个快速且简单的启发式主要是 检查前是否有类似于标记的内容 第一个换行符。虽然对于常见情况,结果可能是正确的, 没有保证

不幸的是,在消息中,在任何标记之前都有一个换行符
\n
,因此该函数无法将消息检测为富文本

在任何情况下,一旦您将文本解释为富文本,您必须使用HTML换行符

,因此使用消息:

"Are you sure you want to delete file?<br> <b>%s</b>"
“确实要删除文件吗?
%s”

将使
QMessageBox
自动检测富文本并生成您想要的结果。

您尝试过吗?此外,如果要使用HTML,则应使用

而不是
\n
。默认情况下,
QMessageBox
尝试通过使用此选项来确定是否使用HTML,检查在第一个换行符之前是否有类似于标记的内容,因此将
\n
更改为

应该可以让
QMessageBox
自动检测HTML。@GiacomoAlzetta非常感谢。我明白了。我刚刚开始学习PySide。