我希望左侧的标签都具有相同的水平长度,同时文本向左对齐。 它们的垂直尺寸等于相应右侧小部件的垂直尺寸。
右侧的标签占用尽可能少的空间。基本上删除文本周围的缩进。
如下所示。
我有这个代码。
import sys
from PyQt5.QtCore import Qt
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout
class Window2(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("About")
vbox = QVBoxLayout()
hboxes = list()
disclaimer = {
'Text': """
some text
""",
'Longer text': """
longer text longer text text longer text longer
"""
}
for label, text in disclaimer.items():
hbox = QHBoxLayout()
for t in (label, text):
l = QLabel(t)
l.setAlignment(Qt.AlignLeft)
l.setStyleSheet('border-style: solid; border-width: 1px; border-color: black;')
hbox.addWidget(l)
vbox.addLayout(hbox)
self.setLayout(vbox)
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
main_window = Window2()
sys.exit(app.exec_())
我似乎无法弄清楚它是如何工作的/什么是边距、缩进、填充、间距、拉伸(stretch)等。请帮助我理解并解决这个问题。
最佳答案
有 2 个错误:
- 多行字符串会添加空格,因此您有两个选项:使用 strip() 删除它们或手动删除它们,在这种情况下我将使用第二个选项。
- 不要在 QVBoxLayout 中使用嵌套的 QHBoxLayout,因为它们不会保持对齐,而是使用 QGridLayout。
class Window2(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("About")
disclaimer = {
"Text": """some text""",
"Longer text": """longer text longer text text longer text longer""",
}
gridlay = QGridLayout(self)
for i, (label, text) in enumerate(disclaimer.items()):
for j, t in enumerate((label, text)):
l = QLabel(t.strip())
l.setAlignment(Qt.AlignLeft)
l.setStyleSheet(
"border-style: solid; border-width: 1px; border-color: black;"
)
gridlay.addWidget(l, i, j)
self.show()
关于python - 删除Qlabel中不必要的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59578155/