我正在尝试制作一个 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。我希望在设置文本时更改字体。
你只需要调用父的方法:
class QLabelFontAutoResize(QLabel):
[...]
def setText(self, text):
[...]
self.setFont(_font)
QLabel.setText(self, text)
# super(QLabelFontAutoResize, self).setText(text)
# super().setText(text)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句