2022-06-19 06:45:36 +12:00
|
|
|
from PyQt5.QtCore import Qt
|
2023-02-16 21:47:23 +13:00
|
|
|
from PyQt5.QtGui import QFontMetrics, QResizeEvent
|
2022-06-19 06:45:36 +12:00
|
|
|
from PyQt5.QtWidgets import QLabel
|
|
|
|
|
|
|
|
|
|
|
|
class ElideLabel(QLabel):
|
|
|
|
__text: str = ""
|
|
|
|
|
|
|
|
def __init__(self, text="", parent=None, flags=Qt.WindowFlags()):
|
|
|
|
super(ElideLabel, self).__init__(parent=parent, flags=flags)
|
|
|
|
if text:
|
|
|
|
self.setText(text)
|
|
|
|
|
|
|
|
def setText(self, a0: str) -> None:
|
|
|
|
self.__text = a0
|
|
|
|
self.__setElideText(a0)
|
|
|
|
|
|
|
|
def __setElideText(self, a0: str):
|
|
|
|
metrics = QFontMetrics(self.font())
|
2023-02-16 21:47:23 +13:00
|
|
|
elided_text = metrics.elidedText(
|
|
|
|
a0, Qt.ElideRight,
|
|
|
|
self.width() - self.contentsMargins().left() - self.contentsMargins().right()
|
|
|
|
)
|
2022-06-19 06:45:36 +12:00
|
|
|
super(ElideLabel, self).setText(elided_text)
|
|
|
|
|
2023-02-16 21:47:23 +13:00
|
|
|
def resizeEvent(self, a0: QResizeEvent) -> None:
|
2022-06-19 06:45:36 +12:00
|
|
|
self.__setElideText(self.__text)
|
2023-02-16 21:47:23 +13:00
|
|
|
super(ElideLabel, self).resizeEvent(a0)
|