python - 如何将一个 QtWidget(例如 QTreeWidget)的样式(表)应用到另一个小部件(例如 QLabel)?

标签 python pyqt pyqt5 qlabel

我在两个不同的系统上运行了下面的 MCVE 片段,生成了屏幕截图中所示的窗口。正如您所看到的,它们的边框样式不同。我不介意。两个系统上允许边框样式不同。但是,对于一个系统,我希望两个 QtWidget 的边框样式相同。 QLabel的边框样式好像还没有设置。

如何将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; 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_())
<小时/>

两个不同系统的屏幕截图

screenshot

最佳答案

由于以下原因,您的一般问题无法解决:

  • 一个小部件的属性不与其他小部件共享。

  • 某些属性的值有默认值,并且高度依赖于Qt开发人员的决定,例如QLabel的边缘,即可以修改边缘但无法读取默认值。

  • 并非所有视觉元素都可以使用 Qt 样式表进行修改,实际上它非常有限,通常最好创建一个自定义的 QStyle。

但是您的特定问题可以解决,在本例中我们将边框设置为无。

from PyQt5 import QtWidgets

QSS = '''
QTreeWidget{ 
    border: None 
}
QLabel{
    background-color: white; 
    min-height: 200px;
}
'''

class widget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        treewidget = QtWidgets.QTreeWidget()
        label = QtWidgets.QLabel()

        grid = QtWidgets.QGridLayout(self)
        grid.setSpacing(10)
        grid.addWidget(treewidget, 1, 0)
        grid.addWidget(label, 2, 0)
        self.show()

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

enter image description here

关于python - 如何将一个 QtWidget(例如 QTreeWidget)的样式(表)应用到另一个小部件(例如 QLabel)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53798076/

相关文章:

python - 为什么我的折线图没有显示在 GUI 上

python - Windows 11上Pyqt5-tools安装错误

python - 保存带有一些额外信息的 DataFrame

Python ISO-8859-1 编码

python - 在 gRPC 转码中允许重复字段

python - 下载 PyQt5 和 Pytube 时 GUI 卡住

python - PyQt4 到 PyQt5 怎么样?

python - 不允许发送数据? [WinError 10057]

c++ - C++ 中的 PyQt 自定义小部件

python - 当单个模型被多个 View 共享时