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

时间:2018-08-21 09:50:00

标签: 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 you sure you want to delete file?\n <b>%s</b>"

我该怎么做?

1 个答案:

答案 0 :(得分:0)

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

但是,仅当您创建自定义QMessageBox 实例然后进行设置时,此方法才有效,而在使用QMessageBox.information静态方法时,它将不起作用。

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

  

如果字符串文本可能是富文本,则返回true;否则,返回true。除此以外   返回false。

     

此函数使用快速且因此简单的启发式方法。 主要   检查在之前是否有看起来像标签的东西   首先换行。尽管在某些情况下结果可能是正确的,   没有保证。

不幸的是,在您的消息中,您在任何标记之前都\n 之前是换行符,因此该功能无法将您的消息检测为富文本。

无论如何,一旦您将文本解释为富文本格式,就必须使用HTML换行符<br>,因此请使用以下消息:

"Are you sure you want to delete file?<br> <b>%s</b>"

将使QMessageBox自动检测RTF文本并产生所需的结果。