コピペで実装できる QSpinBox QSS スタイルレシピ 4種

QSS,QSS Style recipes,Tips,StyleSheet,PySide,PySide2,Python,Qt,MayaQSpinBox

今回はQSpinBoxのオシャレなデザインサンプルを4種類紹介します。QSSコードをコピペすればそのまま使うことができます。もちろん自分好みにカスタマイズして使って頂いても構いません。

QSSの確認に以下のコードを使ってもらっても構いません

スタイルシートに使用するイメージと同じものを使用したい場合は ここからimageResource.pyをダウンロードして使用してください

任意の場所に移動し、importをしてください PYTHONPATH直下であれば下のコードで問題ないはずです

[python highlight="27"] import sys import imageResource from PySide2.QtGui import* from PySide2.QtCore import* from PySide2.QtWidgets import* from maya import OpenMayaUI try: import shiboken except: import shiboken2 as shiboken ptr = OpenMayaUI.MQtUtil.mainWindow() parent = shiboken.wrapInstance(long(ptr), QWidget) class GUI(QFrame): def __init__(self, parent=None, *args, **kwargs): super(GUI, self).__init__(parent, *args, **kwargs) self.setWindowTitle("Qss template") self.resize(300, 230) self.spinBox = QSpinBox(self) self.spinBox.setObjectName("spinBox") self.spinBox.setGeometry(50, 90, 200, 24) self.setStyleSheet(""" # ここにcopy&paste """) def main(): app = QApplication.instance() gui = GUI() gui.show() sys.exit() app.exec_() if __name__ == '__main__': main() [/python] 27行目の# ここにcopy&pasteの部分にQSSをコピペすると同じものを作成できます

SpinBoxのデザインを変える

[css collapse="true"] QSpinBox#spinBox { color: lightgray; background: #242424; height: 25px; } QSpinBox::down-button#spinBox, QSpinBox::up-button#spinBox { subcontrol-origin: border; background: #40dcda; width: 20px; height: 25px; } QSpinBox::down-button#spinBox { subcontrol-position: center left; border-bottom-left-radius: 3px; border-top-left-radius: 3px; } QSpinBox::up-button#spinBox { subcontrol-position: center right; border-bottom-right-radius: 3px; border-top-right-radius: 3px; } QSpinBox::up-button:hover#spinBox, QSpinBox::down-button:hover#spinBox { background: #788787; } QSpinBox::up-button:pressed#spinBox, QSpinBox::down-button:pressed#spinBox { background: #40dcda; } QSpinBox::up-arrow#spinBox, QSpinBox::down-arrow#spinBox { subcontrol-origin: content; width: 12px; height: 12px; } QSpinBox::up-arrow#spinBox{ image: url(":/icons/QSpinBox/plus-fill_hover.png"); } QSpinBox::down-arrow#spinBox{ image: url(":/icons/QSpinBox/minus-fill_hover.png"); } [/css]

Roundのデザイン

コードにself.spinBox.setAlignment(Qt.AlignHCenter)を設定することでQSpinBoxのテキストを真ん中に持っていくことができます [python] self.spinBox.setAlignment(Qt.AlignHCenter) [/python]

[css collapse="true"] QSpinBox#spinBox { color: lightgray; background-color: #444; border-style: none; width: 24px; } QSpinBox::down-button#spinBox, QSpinBox::up-button#spinBox { subcontrol-origin: margin; background: #3d525f; width: 24px; height: 24px; } QSpinBox::down-button#spinBox { subcontrol-position: center left; } QSpinBox::up-button#spinBox { subcontrol-position: center right; } QSpinBox::down-button#spinBox, QSpinBox::up-button#spinBox { border-radius: 12px; } QSpinBox::down-button:hover#spinBox, QSpinBox::up-button:hover#spinBox { background-color: #788787; } QSpinBox::down-button:pressed#spinBox, QSpinBox::up-button:pressed#spinBox { background-color: #c64236; } QSpinBox::up-arrow#spinBox, QSpinBox::down-arrow#spinBox { subcontrol-origin: content; width: 12px; height: 12px; } QSpinBox::up-arrow#spinBox{ image: url(":/icons/QSpinBox/plus-fill_hover.png"); } QSpinBox::down-arrow#spinBox{ image: url(":/icons/QSpinBox/minus-fill_hover.png"); } [/css]

枠のデザイン

[css collapse="true"] QSpinBox#spinBox{ background-color: #444; border-style: solid; border-width: 2px; border-color: #ffcd00; border-radius: 5px; margin-right: 20px; } QSpinBox::down-button#spinBox, QSpinBox::up-button#spinBox { background-color: #444; } QSpinBox::up-arrow#spinBox, QSpinBox::down-arrow#spinBox { width: 12px; height: 12px; } QSpinBox::up-arrow#spinBox{ subcontrol-position: top center; } QSpinBox::down-arrow#spinBox{ subcontrol-position: bottom center; } QSpinBox::up-arrow#spinBox{ image: url(":/icons/QSpinBox/arrow-drop-up-line.png"); } QSpinBox::down-arrow#spinBox{ image: url(":/icons/QSpinBox/arrow-drop-down-line.png"); } QSpinBox::up-arrow:hover#spinBox{ image: url(":/icons/QSpinBox/arrow-drop-up-line_hover.png"); } QSpinBox::down-arrow:hover#spinBox{ image: url(":/icons/QSpinBox/arrow-drop-down-line_hover.png"); } [/css]

左右に並んだデザイン

[css collapse="true"] QSpinBox { color: lightgray; background: #2c2c2c; border: none; padding: 5px; } QSpinBox::down-arrow { subcontrol-origin: content; subcontrol-position: left center; width: 12px; height: 12px; background: transparent; image: url(":/icons/QSpinBox/arrow-drop-left-line.png"); } QSpinBox::up-arrow{ subcontrol-origin: content; subcontrol-position: right center; width: 12px; height: 12px; background: transparent; image: url(":/icons/QSpinBox/arrow-drop-right-line.png"); } QSpinBox::up-arrow:hover { image: url(":/icons/QSpinBox/arrow-drop-right-line_hover.png"); } QSpinBox::down-arrow:hover { image: url(":/icons/QSpinBox/arrow-drop-left-line_hover.png"); } QSpinBox::up-arrow:pressed { image: url(":/icons/QSpinBox/arrow-drop-right-line.png"); } QSpinBox::down-arrow:pressed { image: url(":/icons/QSpinBox/arrow-drop-left-line.png"); } QSpinBox::down-button, QSpinBox::up-button { subcontrol-origin: border; width: 14px; height: 12px; background: transparent; border: none; } QSpinBox::down-button{ margin: 0 0 0 12px; padding: 0 14px 0 -12px; } QSpinBox::down-button, QSpinBox::up-button { subcontrol-position: center right; } [/css]

何かのときに参考にしていただければと思います