MayaのPySideでStyleSheetファイルを読み込む
いくつか方法があるみたいですが、自分はPySide側にファイルを読みこむクラスがあったのでそれで読み込むことにしています。
https://gyazo.com/8e11dfc67ca06718292deefe1225377e
code: load_qss.py
qss_file_path = "{}/style.qss".format(os.path.dirname(__file__))
f = QtCore.QFile(qss_file_path)
f.open(QtCore.QFile.ReadOnly)
self.setStyleSheet(unicode(f.readAll()))
f.close()
上記だとパスはpythonファイルと同じパスにある状態。
ちなみにqssというのはPySideで使われるStyleSheetみたいだけど、個人的には別に拡張子cssにしててもいいと思う。
予約語がcssと異なるけど特に設定してない環境の人に見てもらう場合とかに自動補完をわざわざ設定してもらうのもなので。
cssにしとくとアーティストでStyleSheet触れる人に気軽に見てもらえる。
クラス内に入っている全文だとこんな感じ。後述のqssをスクリプトと同階層において実行。
code: load_qss_test.py
# -*- coding: utf-8 -*
import os
from PySide2 import QtCore, QtWidgets
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin
class QSSWindow(MayaQWidgetBaseMixin, QtWidgets.QMainWindow):
def __init__(self):
super(QSSWindow, self).__init__()
self.__init__ui()
self._load_qss()
def __init__ui(self, parent=None):
center_widget = QtWidgets.QWidget(parent)
self.setCentralWidget(center_widget)
main_layout = QtWidgets.QVBoxLayout()
center_widget.setLayout(main_layout)
# ラベルの作成
main_layout.addWidget(QtWidgets.QLabel(u"<H1>Super Pikachu Tool</H1>"))
# ボタンの作成
main_layout.addWidget(QtWidgets.QPushButton(u"全てのピカチュウを選択"))
main_layout.addWidget(QtWidgets.QPushButton(u"ピカチュウをピチュウに退化"))
main_layout.addWidget(QtWidgets.QPushButton(u"ピカチュウをライチュウに進化"))
dedenne_button = QtWidgets.QPushButton(u"ピカチュウをデデンネに進化")
main_layout.addWidget(dedenne_button)
dedenne_button.setObjectName("dedenne")
def _load_qss(self):
"""
同階層のstyle.qssを読み込む
:return:
"""
qss_file_path = "{}/style.qss".format(os.path.dirname(__file__))
f = QtCore.QFile(qss_file_path)
f.open(QtCore.QFile.ReadOnly)
self.setStyleSheet(unicode(f.readAll()))
f.close()
code: style.qss
QWidget{
}
QLabel{
}
QPushButton {
height: 24px;
border-style: outset;
border-width: 2px;
border-radius: 20px;
font: 16px;
padding: 6px;
}
QPushButton#dedenne {
border-width: 4px;
border-radius: 20px;
font: bold 16px;
}
QPushButton:pressed{
}
QPushButton#dedenne:pressed{
}
実行するとページ上部の画像のようなウィンドウになる。