根据它包含的文本自动调整 QLabel 的大小

Auto adjust size of QLabel according to text it contains

我有一个 QLabel,我想根据它包含的文本调整它的大小(加上边上的一些边距)。我试过这个:

self.WarnLab = QtGui.QLabel(self.HeaderRight)
font = QtGui.QFont()
font.setFamily(_fromUtf8("Avenir"))
font.setPointSize(18)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.WarnLab.setFont(font)
self.WarnLab.setObjectName("WarnLab")
r = self.WarnLab.fontMetrics().boundingRect(_translate("MainWindow","This is some, \nlonger multi-line text blahblahblah!",None))
self.WarnLab.fixedWidth(r.width())
self.WarnLab.fixedHeight(r.height())
self.WarnLab.setStyleSheet(_fromUtf8("QLabel { background-color : orange; color : white;}"))
self.gridLayout_2.addWidget(self.WarnLab, 0,0,0,0)

但是 QLabel 没有 属性 fixedWidth(),也就是说,这行不通。谁能帮帮我?

如果您需要在小部件中设置固定尺寸,则必须使用 setFixedWidth(), setFixedHeight() and/or setFixedSize():

self.WarnLab.setFixedSize(r.size()) 

self.WarnLab.setFixedWidth(r.width())
self.WarnLab.setFixedHeight(r.height())

如果您想了解 QLabel 或任何其他小部件的所有方法,您应该查看 Qt 的文档,例如 here is the docs of QLabel, and if you want all the methods you must click on the section "List of all members, including inherited members" .