Pyside Qt centralwidget设置样式表不起作用

时间:2014-10-03 17:07:33

标签: 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。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您的问题的原因是裸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_())