如何使 QLabel 的边框看起来像 QTreeWidget 等其他小部件的边框?

How to make border of QLabel look like border of other widgets like QTreeWidget?

我注意到 QTreeWidget 和 QLabel 的边框样式不同 - 即使我尝试调整样式表。当然,我可以更改两者的样式表,但理想情况下我想保留 QTreeWidget 的边框样式。如何让QLabel的边框看起来像QTreeWidget的边框?


MCVE 片段:

import sys
from PyQt5.QtWidgets import *

class widget(QWidget):
    def __init__(self):
        super().__init__()
        treewidget = QTreeWidget(self)
        label = QLabel(self)
        label.setStyleSheet("background-color: white; border: 1px inset grey; min-height: 200px;")
        grid = QGridLayout()
        grid.setSpacing(10)
        grid.addWidget(treewidget, 1, 0)
        grid.addWidget(label, 2, 0)
        self.setLayout(grid)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    f = widget()
    sys.exit(app.exec_())

没有样式表:


结果 window MCVE 片段的屏幕截图:


我希望 window 看起来像什么:

您可能已经找到了答案,但以防万一...

以下应该能满足您的需求...

label = QLabel(self)
label.setFrameShape(QFrame.Panel)
label.setFrameShadow(QFrame.Sunken)
label.setLineWidth(3)

我刚刚设置了线宽。请注意,"border: 1px" 说明符 必须 从样式 sheet 中删除,否则它将优先于指定的线宽使用。完整的代码是...

import sys
from PyQt5.QtWidgets import *

class widget(QWidget):
    def __init__(self):
        super().__init__()
        treewidget = QTreeWidget(self)
        label = QLabel(self)
        label.setStyleSheet("background-color: white; inset grey; min-height: 200px;")
        label.setFrameShape(QFrame.Panel)
        label.setFrameShadow(QFrame.Sunken)
        label.setLineWidth(3)
        grid = QGridLayout()
        grid.setSpacing(10)
        grid.addWidget(treewidget, 1, 0)
        grid.addWidget(label, 2, 0)
        self.setLayout(grid)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    f = widget()
    sys.exit(app.exec_())