Zastanawiam się, jak najlepiej skrócić tekst w QLabel na podstawie jego maksymalnej szerokości/wysokości. Przychodzący tekst może mieć dowolną długość, ale aby zachować porządek, chciałbym skrócić długie łańcuchy, aby wypełnić maksymalną ilość miejsca (maksymalna szerokość/wysokość widgetu).PySide/PyQt obcina tekst w QLabel na podstawie minimumSize
Np .:
'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'
staną:
'A very long string where there should only be a short one, but ...'
na podstawie wymaganej przestrzeni bieżących potrzeb czcionki.
Jak mogę osiągnąć to najlepiej?
Oto prosty przykład tego, co mi po tym, choć jest to na podstawie liczby słów, a nie wolnego miejsca:
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_())
Wow, to jest bardzo fajne, dzięki! –
@EricHulser, to bardzo bardzo dobra odpowiedź. Bardzo przydatne. Wielkie dzięki! – Phil