Я делаю свои собственные классы расширенными с QWidget. Когда стиль и класс находятся в одном файле, нет проблем с их оформлением.
main.py
from PyQt5 import QtWidgets
from widgets import HistoryWidget, RandomBtn
class MainWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
hw = HistoryWidget()
btn = RandomBtn()
layout = QtWidgets.QGridLayout()
layout.addWidget(hw)
layout.addWidget(btn)
self.setLayout(layout)
self.setGeometry(0, 0, 400, 400)
if __name__ == "__main__":
app = QtWidgets.QApplication([])
main = MainWindow()
main.show()
stylesheet = """
MainWindow {
background-color: #1c1c1c;
}
HistoryWidget {
background-color: #cadd45;
}
QLabel {
color: white;
}
RandomBtn {
background-color: #cadd45;
}
"""
app.setStyleSheet(stylesheet)
app.exec()
Однако, когда класс находится в другом файле, он, похоже, не находит этот элемент (класс) в стиле
widgets.py
from PyQt5 import QtWidgets, QtCore
class HistoryWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setLayout(QtWidgets.QGridLayout())
l = QtWidgets.QLabel("Hello")
self.layout().addWidget(l)
self.setFixedSize(QtCore.QSize(100, 100))
class RandomBtn(QtWidgets.QPushButton):
def __init__(self):
super().__init__()
self.setFixedSize(QtCore.QSize(100, 100))
Вы можете видеть, что кнопка затронута, но виджет - нет. Есть идеи, что с этим делать? Спасибо