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

2024-05-14 07:59:30 发布

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

我注意到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 default


MCVE片段生成窗口的屏幕截图:

window as is


我希望窗口的外观:

window as desired


Tags: importselfinitsys样式widget样式表label
1条回答
网友
1楼 · 发布于 2024-05-14 07:59:30

你可能已经找到了答案,但以防万一。。。

下面应该为你提供你想要的。。。

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

我刚把线的宽度硬连线了。请注意,必须从样式表中删除“border:1px”说明符,否则它将优先于指定的线宽使用。完整的代码是。。。

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_())

相关问题 更多 >

    热门问题