我正在尝试制作一个QLabel小部件,它将调整文本字体的大小,使整个文本始终适合QLabel。
class QLabelFontAutoResize(QLabel):
def __init__(self, text):
super(QLabelFontAutoResize, self).__init__()
self._text = text
self.setText(self._text)
def setText(self, text):
width = float( self.size().width() )
_font = self.font()
_fontSize = 1
#Find Correct Font Size
while (True):
_font.setPointSize(_fontSize)
_fontMetric = QFontMetrics( _font )
#Text width exceeds QLabel width
if _fontMetric.width(text) > width:
_fontSize = _fontSize-1
break
_fontSize = _fontSize + 1
_font.setPointSize(_fontSize)
self.setFont(_font)
#This is recursive, How do I actually set the Text
self.setText(text)
如何在不创建递归函数的情况下重写setText(),并实际设置QLabel的文本?
注意:QLabel将是一个固定大小,并且不会调整大小,因此我不会覆盖resizeEvent。我想在设置文本时更改字体。