首页 > 解决方案 > PyQt5:无法设置来自不同文件的类

问题描述

我正在从 QWidget 扩展我自己的类。当样式和类在同一个文件中时,对其进行样式设置没有问题。

主文件

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()

但是,当类来自不同的文件时,它似乎在样式中找不到该元素(类)

小部件.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))

您可以看到按钮受到影响,但小部件没有受到影响。知道该怎么做吗?谢谢

标签: pythonpython-3.xpyqt5qtstylesheets

解决方案


推荐阅读