ON-BLOG

CGのこと、あれこれ書いてます。

Pyside勉強 その壱

Pyside自体は今までも使ってきました。
が、その場しのぎでずっと使ってきました。

数日前に数見たらPysideで作ったスクリプトが20個ほど。
ただ、これらはいろんなサンプルから作っただけなので
基本で躓くことが多く、結構時間が掛かってしまってました。

ちょうど2017年の暮頃に、モチオさんが
SiShelf
github.com
を開発されていて、それに影響受けて私もやろうと
メモしたやつが見つかったので、それを再度まとめつつ
どうせなら、うやむやにしてた箇所を、一から学びなおしたいと思います。
すべて記事にすることは難しいですが、一先ず最近セレクターを
複数個作ったので、この勉強でのゴールはPysideでセレクターを作ることにします。



では、初めにいつものハローワールドから。
https://wiki.qt.io/Hello_World_in_PySide/jahttps://wiki.qt.io/Hello_World_in_PySide/ja
こちらに記載しているコードで行います。

import sys
from PySide.QtCore import *
from PySide.QtGui import *
app = QApplication(sys.argv)
label = QLabel("Hello World")
label.show()
app.exec_()
sys.exit()

MAYAで実行すると、エラーになります。
f:id:tommy_on:20190414230602p:plain

なんでおきているかというと、MAYAでは
起動時にPysideを起動しているので
多重起動になってますよ!
ってエラーになっているわけです。

なので、それを回避する為には、以下のようにします。

app = QApplication.instance()

文字通り、インスタンス化して起動させています。


起動すると、以下の感じになります。
f:id:tommy_on:20190414230741p:plain
無事起動できました。
起動はできましたが、一個一個が説明できないと
理解したことにならないと思うので


ここは一行ずつみていきます。
コード

import sys

Pythonインタプリタ、実行環境などの処理をまとめた
モジュールになります。
ファイル、パス操作など、基本的なコマンド多いので
Pythonではよく使います。

from PySide.QtCore import *
from PySide.QtGui import *

PysideのGUIやそのコネクション周りのモジュールを読み込む必要があります。
それらをアスタリスクで一括読み込みしています。
アスタリスクで読み込んでいるのは、手を抜いている証拠です苦笑

app = QApplication.instance()

前述したとおり。
インスタンスを作成しています。

label = QLabel("Hello World")

PysideのQLabelというテキストや画像を表示するためのモジュールを
使って括弧内の【Hello World】をテキストとして、描画する!
という設定を行いつつ、labelという変数に格納しています。

label.show()

前述した、ラベルと表示させるコマンドです。
MAYAのShowと同じ感じです。

app.exec_()

このコマンドで、アプリケーションを実行しています。
exec_()は実行コマンドなので、インスタンスを実行する。
ということです。

sys.exit()

スクリプトのプロセスを終了させます。
正直、上記の書き方では無くても動きます。

MAYAで動かす際には

from PySide.QtCore import *
from PySide.QtGui import *
label = QLabel("Hello World")
label.show()

このコマンド郡だけで動きます。
これは前述しましたが、MAYA上で既にPysideが動いていますので
スクリプトエディタ上では

app.exec_()
sys.exit()

この二つをスクリプト実行時に、裏で実行している為です。

こんな感じで一番初歩の部分から進めていき
10回ぐらい続けばいいなぁと思います。

以上です。