python - Pyside Qt centralwidget 设置样式表不工作

标签 python css pyqt pyside

<分区>

我有一个 Qt Designer 构建的 GUI 我正在使用 PySide 框架构建并且 css 文件在设计器工具中工作正常但是在我使用 pyside-uic 工具之后 centralwidget 对象上的 css停止工作。

我正在使用 pyside-uic 工具如下:

pyside-uic.exe FileIn.ui -o FileOut.py

在生成的代码中我有:

self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")

对于我拥有的 CSS:

MainWindow.setStyleSheet("QWidget#centralwidget{background-color: 
qlineargradient(spread:pad, x1:0.683, y1:1, x2:1, y2:0, stop:0
rgba(103, 103, 103,255), stop:1 rgba(144, 144, 144, 255));
"}

第一行在 PyCharm 中显示警告:

“在 __init__ 之外定义的实例属性 centralwidget”

在 CSS 中,如果我以 QWidget 为目标,我可以在中央小部件上获得我想要的样式,但它会覆盖我的 GUI 的其余部分。

有什么建议吗?

最佳答案

你的问题的原因是裸QWidget没有背景。您可以使用自定义 paintEvent() 将其实现为自己的小部件,也可以只使用 QFrame

以下代码适用于我:

#!/usr/bin/env python

from PySide import QtCore, QtGui

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        widget = QtGui.QFrame()
        widget.setObjectName("centralwidget")

        self.setCentralWidget(widget)
        self.resize(480,320)


if __name__ == '__main__':

    import sys

    app = QtGui.QApplication(sys.argv)
    app.setStyleSheet("#centralwidget { background-color: qlineargradient(spread:pad, x1:0.683, y1:1, x2:1, y2:0, stop:0 rgba(103, 103, 103,255), stop:1 rgba(144, 144, 144, 255)); }")

    window = MainWindow()    
    window.show()
    sys.exit(app.exec_())

关于python - Pyside Qt centralwidget 设置样式表不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26183510/

相关文章:

javascript - 打开网站的另一个页面后保持 jquery 下拉菜单打开

python - 从辅助线程重定向标准输出(使用函数而不是类进行多线程?)

python - PyQt Widget connect() 和 disconnect()

python - 将二维数组组合成元组

python - 改进 setInterval 的当前实现

python - pyodbc Access 数据库 MSysObjects 权限问题

python - pandas:跨多列搜索部分字符串并输出每行的值

jquery - Bootstrap 轮播。在底部添加分页点

jquery - DataTable 不居中且自动宽度不正确

python - 使用 QAbstractTableModel 在 pyqts QTableView 中插入和删除行