我遇到了 PyQt4 的问题。我想在一个窗口中创建一个新的小部件,并且我希望这个小部件具有自定义颜色。
当我创建 QWidget 类的子类并实例化它时,我无法通过 setStyleSheet() 函数更改其背景颜色。
当我实例化一个新的 QWidget 对象时,我在更改其背景颜色方面没有任何问题。但我不想要一个普通的 QWidget 对象。我想创建自己的 QWidget 子类。
当我创建 QPushButton 的子类时,我还可以使用 setStyleSheet() 函数更改其背景颜色。
控制台窗口中没有错误消息或警告,它只是拒绝正常工作,没有任何说明原因。
所以我想知道的是,如果我只是创建一个 QWidget 对象或 QPushButton 的子类,为什么我可以更改小部件的背景颜色,但当我创建 QWidget 的子类时却不能。因此,我如何更改作为 QWidget 子类的对象的背景颜色?
它可能是我正在使用的 python 或 PyQt 版本的特定内容吗?这是图书馆的错误吗?还是我编写代码的方式存在缺陷?
我正在使用 python 2.6.4 和 PyQt4
下面是导致我遇到麻烦的代码示例。窗口中有三个小部件,一个在另一个之下。父小部件设置为背景颜色为绿色。顶部的小部件设置为红色,中间的小部件是QWidget的子类,应该是蓝色的,但由于某种原因它采用了父窗口的颜色,所以它看起来不可见。底部小部件是 QPushButton 的子类,是白色的。
import sys
from PyQt4 import QtGui, QtCore
################################################################################
#--------------------------------------------------------- CUSTOM WIDGET CLASS 1
class CustomWidget(QtGui.QWidget):
def __init__(self, parent):
QtGui.QWidget.__init__(self, parent)
# some custom properties and functions will follow
################################################################################
#--------------------------------------------------------- CUSTOM WIDGET CLASS 2
class CustomWidget2(QtGui.QPushButton):
def __init__(self, parent):
QtGui.QPushButton.__init__(self, parent)
# some custom properties and functions will follow
################################################################################
#----------------------------------------------------------- PARENT WIDGET CLASS
class Parent(QtGui.QWidget):
def __init__(self, parent=None):
#---------------------------------------------------------- SETUP WINDOW
QtGui.QWidget.__init__(self, parent)
self.resize(500, 340)
self.setStyleSheet("QWidget {background-color: #00FF00}")
#-------------------------------------------------- SETUP DEFAULT WIDGET
wid1 = QtGui.QWidget(self)
wid1.setGeometry(10, 10, 480, 100)
wid1.setStyleSheet("QWidget {background-color: #FF0000 }")
#------------------------------------------------- SETUP CUSTOM WIDGET 1
wid2 = CustomWidget(self)
wid2.setGeometry(10, 120, 480, 100)
wid2.setStyleSheet("QWidget {background-color: #0000FF }")
#------------------------------------------------- SETUP CUSTOM WIDGET 2
wid3 = CustomWidget2(self)
wid3.setGeometry(10, 230, 480, 100)
wid3.setStyleSheet("QWidget {background-color: #FFFFFF }")
################################################################################
#-------------------------------------------------------------------------- MAIN
app = QtGui.QApplication(sys.argv)
win = Parent()
win.show()
app.exec_()