Pyside2 和 material 设计

Pyside2 and material design

我正在编写一个简单的应用程序来控制实验设置。我已经完成了大部分重要的工作,并且我认为为 UI 小部件使用 material 设计会很好。

我发现这个存储库包含我想要的所有小部件 https://github.com/laserpants/qt-material-widgets,但我不知道如何将它们导入我的项目。我正在使用 Pyside2 和 qtDesigner,用 QUiLoader 加载 ui 文件,例如:

class ConsoleWindow(QObject):
    def __init__(self, uifilename):
        super(ConsoleWindow, self).__init__(None)
        self.window = QUiLoader().load( QFile( 'uifile.ui' ) )

        self.setupCallbacks()

        self.window.installEventFilter(self)
        self.window.show()

 [...]

有人知道怎么做吗?

目前你只有一个选择, 为您使用的每个元素使用样式 sheets。

我发现一个 old repository 试图提供一组样式规则,以便您可以直接在代码中使用它们,但我不知道它们与纯 material-设计外观。

您可以为每个元素设置样式,例如:

class MyWidget(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        # Changing background color
        self.setStyleSheet("background-color: rgb(0.2, 0.3, 0.8, 0.2);")

或为您的应用程序加载通用样式 sheet:

sheet = ":/some_style_sheet_file.qss"
with open(sheet, "r") as f:
    style = f.read()

app = QApplication([])
# ...
app.setStyleSheet(style)
sys.app(app.exec_())

另一方面,如果你想使用 Qml,你可以像 this example 一样轻松实现。