为什么 pyqt 无法识别 Qt Designer css 样式 Sheet 的背景颜色?

Why does not pyqt recognize background colour of Qt Designer css Style Sheet?

  1. 我在 Qt Designer 中使用样式 Sheet 设置背景属性,例如绿色:

显然有效。

  1. 我用 pyuic4 将 ui 文件翻译成 pyqt 并得到:

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(400, 300)
        Dialog.setAutoFillBackground(False)
        Dialog.setStyleSheet(_fromUtf8("QDialog{background-color: green;}"))
  1. 我在python里写代码显示绿色window,但是不行

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from background_green import *

class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    myapp = Window()
    myapp.show()
    sys.exit(app.exec_())

尽管我和其他 Widgets 一样按照相同的过程进行,但我无法更改主 window 的颜色。

问题的产生是因为当您使用 QDesigner 时,您实现了一个 QDialog,所以您的小部件应该是那种类型。

QWidget 更改为 QDialog

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.resize(400, 300)
        Dialog.setAutoFillBackground(False)
        Dialog.setStyleSheet("QDialog{background-color: green;}")

class Window(QDialog):
    def __init__(self, parent=None):
        QDialog.__init__(self, parent=parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myapp = Window()
    myapp.show()
    sys.exit(app.exec_())

截图: