Мне интересно, как лучше всего обрезать текст в QLabel на основе его максимальной ширины/высоты. Входящий текст может быть любой длины, но для того, чтобы сохранить аккуратный макет, я хотел бы обрезать длинные строки, чтобы заполнить максимальное пространство (максимальной ширины/высоты виджета ).
Например.:
'A very long string where there should only be a short one, but I can't control input to the widget as it's a user given value'
станет:
'A very long string where there should only be a short one, but...'
в зависимости от необходимого пространства для текущего шрифта.
Как я могу достичь этого лучше всего?
Вот простой пример того, что мне нужно, хотя это основано на количестве слов, недоступном месте:
import sys
from PySide.QtGui import *
from PySide.QtCore import *
def truncateText(text):
maxWords = 10
words = text.split(' ')
return ' '.join(words[:maxWords]) + '...'
app = QApplication(sys.argv)
mainWindow = QWidget()
layout = QHBoxLayout()
mainWindow.setLayout(layout)
text = 'this is a very long string, '*10
label = QLabel(truncateText(text))
label.setWordWrap(True)
label.setFixedWidth(200)
layout.addWidget(label)
mainWindow.show()
sys.exit(app.exec_())