PyQt5:在栅格布局中从顶部和底部剪切的标签

2024-09-28 15:32:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过for循环向对话框窗口添加标签。最理想的情况是,我希望行高能够根据内容进行调整,这样,如果字符串为一行,行高为一行,而如果字符串为5行,行反映了这一点。这样我就可以添加一个滚动条来浏览所有内容

取而代之的是,我在每个标签的顶部和底部都有一个奇怪的印章:

from PyQt5 import QtWidgets

app = QtWidgets.QApplication([])

window = QtWidgets.QDialog()
grid = QtWidgets.QGridLayout()
window.setLayout(grid)

window.setFixedWidth(200)
window.setFixedHeight(600)

for label in range(5):
    label = QtWidgets.QLabel()
    label.setText(2 * "This is a label with slightly too much text for this little window. Therefore it would be great to wrap this text and have the row size be adjusted automatically.")
    label.setWordWrap(True)
    grid.addWidget(label)

    label2 = QtWidgets.QLabel()
    label2.setText(2 * "HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA")
    label2.setWordWrap(True)
    grid.addWidget(label2)

window.show()
app.exec_()

运行程序时的结果

关于固定宽度/高度的评论,这是固定宽度和高度的结果;高度注释掉:


Tags: 字符串textapp内容for高度标签window
1条回答
网友
1楼 · 发布于 2024-09-28 15:32:37

听起来你想要一个QScrollArea:

from PyQt5 import QtWidgets

app = QtWidgets.QApplication([])

window = QtWidgets.QScrollArea(widgetResizable=True)
widget = QtWidgets.QWidget()
window.setWidget(widget)
grid = QtWidgets.QGridLayout(widget)

window.setFixedWidth(200)
window.setFixedHeight(600)

for label in range(5):
    label = QtWidgets.QLabel()
    label.setText(2 * "This is a label with slightly too much text for this little window. Therefore it would be great to wrap this text and have the row size be adjusted automatically.")
    label.setWordWrap(True)
    grid.addWidget(label)

    label2 = QtWidgets.QLabel()
    label2.setText(2 * "HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA HABALABOBA")
    label2.setWordWrap(True)
    grid.addWidget(label2)

window.show()
app.exec_()

相关问题 更多 >