为什么 pyqt 无法识别 Qt Designer css 样式 Sheet 的背景颜色?
Why does not pyqt recognize background colour of Qt Designer css Style Sheet?
- 我在
Qt Designer
中使用样式 Sheet 设置背景属性,例如绿色:
显然有效。
- 我用 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;}"))
- 我在
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_())
截图:
- 我在
Qt Designer
中使用样式 Sheet 设置背景属性,例如绿色:
显然有效。
- 我用 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;}"))
- 我在
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_())
截图: