У меня проблема с PyQt4. Я хочу создать новый виджет в окне, и я хочу, чтобы этот виджет имел собственный цвет.pyQt4: подкласс QWidget не отвечает на новый цвет setStyleSheet()
Когда я создаю подкласс класса 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_()
Инициатор для opt должен быть 'opt.initFrom (self)' вместо этого. – Algorys