Подогнать текст по ширине QLabel в pyqt5
Как можно растянуть текст по всей ширине QLabel?
Через self.setAlignment(QtCore.Qt.AlignJustify) происходит подгон QLabel под содержимое текста, мне нужно наоборот.
В css есть такая возможность - это text-align: justify, но, наверное, через css в PyQt5 это не сделать, у меня не вышло.
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QWidget
class Ui_Form0(object):
def setupUi0(self, Form0):
Form0.setObjectName("Form0")
Form0.setFixedSize(500, 300)
self.label = QtWidgets.QLabel(Form0)
self.label.setGeometry(QtCore.QRect(0, 50, 500, 50))
self.label.setStyleSheet("text-align: justify;")
self.retranslateUi(Form0)
QtCore.QMetaObject.connectSlotsByName(Form0)
def retranslateUi(self, Form0):
_translate = QtCore.QCoreApplication.translate
Form0.setWindowTitle(_translate("Form0", "Form"))
self.label.setText(_translate("Form0",
"Сообщество здесь, чтобы помочь вам с конкретными проблемами по программированию"))
class MenuWindow(QWidget, Ui_Form0):
def __init__(self):
super().__init__()
self.setupUi0(self)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
ui0 = MenuWindow()
ui0.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Текстовая строка должна интерпретируется как строка с форматированным текстом:
self.label_justify.setTextFormat(Qt.RichText)
label_justify должна содержат политику переноса слов:
self.label_justify.setWordWrap(True)
Текстовая строка должна быть длиннее чем ширина виджета:
+ " " * 77
label_justify должна содержат свойство выравнивания содержимого метки:
self.label_justify.setAlignment(QtCore.Qt.AlignJustify)
from PyQt5 import QtCore, QtWidgets
from PyQt5.Qt import *
class Ui_Form0(object):
def setupUi(self, Form0):
Form0.setObjectName("Form0")
Form0.setFixedSize(600, 300)
self.label = QtWidgets.QLabel(Form0)
self.label.setGeometry(QtCore.QRect(0, 50, 600, 50))
self.label.setStyleSheet("text-align: justify;")
self.retranslateUi(Form0)
QtCore.QMetaObject.connectSlotsByName(Form0)
def retranslateUi(self, Form0):
_translate = QtCore.QCoreApplication.translate
Form0.setWindowTitle(_translate("Form0", "Form"))
self.label.setText(_translate("Form0",
"Сообщество здесь, чтобы помочь вам с конкретными проблемами "
"по программированию."))
class MenuWindow(QWidget, Ui_Form0):
def __init__(self):
super().__init__()
self.setupUi(self)
self.label.setText(
"Сообщество здесь, чтобы помочь вам с конкретными проблемами "
"по программированию. " + " "*77
)
self.label.setWordWrap(True)
self.label.setAlignment(
QtCore.Qt.AlignJustify | QtCore.Qt.AlignVCenter
)
self.label.setStyleSheet("""
background-color: #3B0000;
color: #fff;
""")
# !!! +++ v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^
self.label_justify = QLabel(self)
self.label_justify.setGeometry(QtCore.QRect(0, 125, 600, 50))
self.label_justify.setTextFormat(Qt.RichText) # !!!
self.label_justify.setText(
"Сообщество здесь, чтобы помочь вам с конкретными проблемами "
"по программированию! " + " "*77
) # --> ^^^^^^ <-- # !!!
self.label_justify.setWordWrap(True) # !!!
self.label_justify.setAlignment( # !!!
QtCore.Qt.AlignJustify | QtCore.Qt.AlignVCenter # !!!
)
self.label_justify.setStyleSheet("""
background-color: #3B0000;
padding-top: 10px; /* <---- +++ */
color: #fff;
""")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
ui0 = MenuWindow()
ui0.show()
sys.exit(app.exec_())
