Me pregunto cómo truncar mejor texto en una QLabel en función de su ancho/alto máximo. El texto entrante puede tener cualquier longitud, pero para mantener un diseño ordenado me gustaría truncar cadenas largas para llenar una cantidad máxima de espacio (ancho/alto máximo del widget).PySide/PyQt truncar texto en QLabel basado en minimumSize
ej .:
'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'
se convertiría en:
'A very long string where there should only be a short one, but ...'
basado en el espacio necesario a las necesidades actuales del tipo de letra.
¿Cómo puedo lograr esto mejor?
Aquí es un ejemplo sencillo de lo que busco, aunque esto se basa en el recuento de palabras, no está disponible el espacio:
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_())
guau, eso es genial, gracias! –
@EricHulser, esta es una muy buena respuesta. Muy útil. ¡Muchas gracias! – Phil