一定长度后如何使标签中的文本进入下一行

时间:2019-02-27 16:40:38

标签: python python-3.x pyqt pyqt5 qlabel

我正在PyQt5 / Python 3中为学校的一个项目使用一个小型GUI,但是我遇到了文字截断的麻烦。使用label.adjustSize()不能解决它,并且我想不出任何其他解决方法。我想要它,以便通过创建新标签或使用相同的标签将标签移到新行,这将是更好的选择。截断处的字符数为62,因此,仅当标签文本长于62个字符时才希望创建新行。

这里的问题截图

此处的标签代码屏幕截图

1 个答案:

答案 0 :(得分:0)

除了将QLabel的wordWrap属性设置为True之外,您还必须使用一种布局,以便QLabel自动调整QLabel的宽度:

from PyQt5 import QtCore, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        self.label_content = QtWidgets.QLabel(
            wordWrap=True,
            alignment=QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop
        )
        self.button_view = QtWidgets.QPushButton("View Database")
        self.input_label = QtWidgets.QLabel("Input:") 
        self.lineedit = QtWidgets.QLineEdit()
        self.ask_button = QtWidgets.QPushButton("Ask Question")

        grid_layout = QtWidgets.QGridLayout(self)
        grid_layout.addWidget(self.label_content)
        grid_layout.addWidget(self.button_view, 0, 1, alignment=QtCore.Qt.AlignTop)
        grid_layout.addWidget(self.input_label, 1, 0, 1, 2)
        grid_layout.addWidget(self.lineedit, 2, 0)
        grid_layout.addWidget(self.ask_button, 2, 1)
        grid_layout.setRowStretch(0, 1)

        self.label_content.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sollicitudin aliquet mauris quis fringilla. Vivamus scelerisque mauris turpis, a imperdiet purus varius eget. Suspendisse pretium est id augue accumsan, vel luctus purus luctus. In hendrerit, turpis ac ultricies volutpat, urna enim hendrerit nisl, a sagittis arcu justo sit amet elit. Aenean bibendum, lacus nec commodo consequat, tortor lectus pulvinar velit, eu ultrices sem felis eget velit. Curabitur id ipsum sit amet tellus euismod mollis. Vivamus et imperdiet ligula. Donec malesuada fermentum felis, at egestas justo ultrices ac. In quis risus ut odio mattis commodo vel sit amet mauris. Vestibulum rutrum ligula tellus, quis faucibus urna imperdiet at. Praesent fermentum condimentum leo. Phasellus quis lacus sapien. Duis viverra sodales aliquet. Sed volutpat non nibh tincidunt blandit. Sed elementum sem at ligula pharetra hendrerit. Donec vel scelerisque mauris. ")

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication.instance()
    if app is None:
        app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())

enter image description here