Tips,PySide,PySide2,Python,Qt,MayaQLabelTwitterでラベルに影を付けるのは需要があるのかとつぶやいたところ意外と需要があるみたいで今回はラベルに影を付ける方法を書いていきます。初めにmainWindowになるWindowを作ります。文字が見えやすいようにQPalette()を使用して背景色を白色にしておきます。表示位置はsetGeometryで自分の表示したい位置に数値を変更してください。Button")上のコードのようにwidgetというQWidgetのクラスを用意します。ラベルを置くとデフォルトが真っ白なのでまずはButtonを用意します。self.setPalette(p)そして上のコードのように記述すると下の画像のように真っ白いWindowのなかにボタンがぽつーんとしたwindowが表示されますこれでは少し見た目が微妙なので位置を調整します。今回はQVBoxLayoutを使って位置を調整したいと思います。QVBoxLayoutの説明はざっくりとこんな感じです。PySide.QtGui.QVBoxLayoutクラスはウィジェットを垂直方向に並べるクラスで、垂直ボックスレイアウトオブジェクトを構築するために使います。簡単な使い方は、レイアウトに必要なウィジェットを用意し、PySide.QtGuiを作成します。次にQVBoxLayoutオブジェクトを作成し、ウィジェットをレイアウトに追加します。最後にQWidget.setLayout()を呼び出して、PySide.QtGuiをインストールします。QVBoxLayout()layout.addWidget(button1)layout.addWidget(button2)layout.addWidget(button3)layout.addWidget(button4)layout.addWidget(button5)window.setLayout(layout)window.show()上のコードを実行すると下の画像のようなボタンが大量にレイアウトされたwindowが表示されると思います先のことを踏まえたうえでQVBoxLayoutを設定していきます。self.setLayout(VBox)上のコードを追記して実行すると下の画像のようにボタンがセンターに表示されたwindowが表示されます補足QVBoxLayoutのほかにQHBoxLayoutやQGridLayoutなどのレイアウトがあるので試してみてください。題名の通りラベルに影をつけるのでQLabelを使ってLabelを用意していきたいと思います。今回は四種類のラベルを用意します。ラベルをそのまま用意するだけではだめなのでレイアウトも同時に設定していきます。いつもは内包表記を使うのですが見た目の都合上for文で用意しました。内包表記でQtGuiを用意するのは便利なのでぜひ使ってみてください複雑なものになっていくとコードがとても長くなります。self.setLayout(VBox)上のコードを実行すると下の画像のようにとにかくまっしろ文字も真っ白、このままでは白過ぎてこまる!というようなものが表示されてしまいますということでsetStyleSheetを使ってフォントに色、そして、細すぎても見にくいので太さ、そしてfontサイズを設定していきましょう。}""")よくsetStyleSheetを使用して上のコードのような記述で書かれているものがあるのですが個人的にはあまりお勧めしてません。いうのも統一感を出したりするときにこのコードで直接書いてしまうとコードが長くなってしまうのと一つ変更したときにすべて変更するのがすごくめんどくさくなるからです。}""")個人的には上のように関数にまとめてコードを記述したものを用意して、setStyleSheetに読み込めば後で変更する際にもとても簡単に一括変更することができます。16px;}一番おすすめする方法はCSSのようにstylesheet.qssというようなファイルを用意してQtGui.QApplication自体にsetStyleSheetしても変更できます。個人的に上の方法が好きなので専用の.qssを用意しています。LabelShadow(QMainWindow):の上らへんに関数LabelQSSを記述しておきましょう。self.setLayout(VBox)さて、うまく太文字で出たでしょうか?ここでやっと本題の影!どうやって影を付けていくのかというとQGraphicsDropShadowEffectというものを使います。その名の通りドロップシャドウ効果が使えます。QGraphicsDropShadowEffectの説明はざっくりとこんな感じです。PySide.QtGui.QGraphicsDropShadowEffectクラスはドロップシャドウ効果を使えます。ドロップシャドウエフェクトはソースをドロップシャドウでレンダリングしています。ドロップシャドウの色は、PySide.QtGui.QGraphicsDropShadowEffect.setColor()で変化させることができます。ドロップシャドウのオフセットは、PySide.QtGui.QGraphicsDropShadowEffect.setOffset()ドロップシャドウのぼかしの半径は、PySide.QtGui.QGraphicsDropShadowEffect.setBlurRadius()で変化させることができます。self.setLayout(VBox)とりあえず、上のコードのようにLabels[0]とLabels[1]に設定して実行すると影が出ます。Labels[0]とLabels[1]に設定したはずがLabels[1]にしか設定できていません。じつはQGraphicsDropShadowEffect一つのオブジェクトに対して1ずつしかセットできないのです。ループを使って必要な分だけ用意しましょう。ボタンにも影を付けていきたいと思います。self.setLayout(VBox)上のコードを実行すると下の画像のようにカラフルな影がついたwindowが表示されます以上がLabelに色を付ける方法です!これを使えばちょっとおしゃれなUIが作れるかも?ぜひ、試してください。今回使ったフルソースです。不透明のエフェクト上記のようなエフェクトがあります。フェードイン、アウトさせたり、色を変化させたりすることができる。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。MayaやPySideの情報を中心にメモ帳代わりにして気ままに更新しています。