覆盖 QLabel 中的 setText()
Override setText() in QLabel
我正在尝试制作一个 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)
我正在尝试制作一个 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)