微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyQt5 - QLabel 填充无法按预期工作

如何解决PyQt5 - QLabel 填充无法按预期工作

填充属性未按预期工作。

这是我的代码

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QHBoxLayout,QLabel

class Window(QWidget):
    def __init__(self):
        super().__init__()

        self.setFixedSize(450,450)

        tracking_description = QLabel()
        tracking_description.setStyleSheet('''
                border: 2px solid;
                border-radius: 8px;
                padding-top: 0px;
                padding-bottom: 0px;
                padding-right: 10px;
                padding-left: 10px;
                ''')
        tracking_description.setText("Consente di scegliere una \
                delle camere installate sul territorio e impostarla \
                in <b>modalità tracciante</b>.<br />Durante questa fase \
                il sistema osserverà i veicoli che transitano nella scena \
                e <b>definirà in maniera automatica delle aree di \
                parcheggio</b>.<br />\Propedeuticamente,sarà possibile \
                definire le scene di osservazione che una specifica camerà \
                dovrà gestire.")
        tracking_description.setWordWrap(True)
        tracking_description.setFixedWidth(408)

        vBox = QVBoxLayout()
        vBox.addStretch(1)
        vBox.addWidget(tracking_description)
        vBox.addStretch(1)

        hBox = QHBoxLayout()
        hBox.addStretch(1)
        hBox.addLayout(vBox)
        hBox.addStretch(1)

        self.setLayout(hBox)

if __name__ == "__main__":
    app = QApplication(["Todo"])
    win = Window()
    win.show()
    sys.exit(app.exec_())

如果我将 tracking_description QLabel 的 padding-rightpadding-left 保持为 10px,这就是输出(也有意外的顶部和底部填充) :

Padding is NOT ok

如果我将 padding-rightpadding-left 设置为 30px,这是输出(预期顶部和底部填充为 0px):

Padding is ok

为什么会有这种行为?

解决方法

如果在 QLabel 上设置 marginpadding,则必须将 indent 设置为零。因为如果 indent 属性的值等于 -1 或未设置,Qt 会添加额外的空间(取决于对齐方式)。

QLabel 
{
    qproperty-indent:0; /* without px or whatever*/
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。