python - 删除 Qlabel 中不必要的空格
问题描述
我希望左侧的标签都具有相同的水平长度,而文本与左侧对齐。它们的垂直尺寸等于相应右侧小部件的垂直尺寸。
右侧的标签尽可能少地占用空间。基本上删除文本周围的缩进。
像下面的东西。
我有这个代码。
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_())
我似乎无法弄清楚它是如何工作的/什么是边距、缩进、填充、间距、拉伸等。请帮助我理解并解决这个问题。
解决方案
它有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()
推荐阅读
- android - 安卓麦克风通过蓝牙连接到手机
- c# - 从服务器外部访问网站时,ASP.Net PageLoad 和控制事件触发两次
- reactjs - 未捕获的 SyntaxError:标识符“套接字”已在客户端文件中声明
- asp.net-core - 在 netcore2.1 中生成 HMAC SHA3-512
- html - 无法使用 .close() 关闭 ngb-datepicker(.close() 不是函数)
- combobox - 如何将样式应用于 XPages 中的层次组合框
- java - 进入子目录时 JSF WebContent 呈现方法不起作用
- python - 创建包含另一个数据框的列名和相应值的 df
- java - 在 java 中获取 Lambda 的结果
- elasticsearch - Elasticsearch REST 搜索 API