モーション研究室

ゲーム業界のモーションデザイナーが書いてるモーション講座

【Python学習】Lv06 GUIとPySide

スポンサーリンク

f:id:generalion:20200113184324j:plain

Python学習】前回の記事はコチラ▼

Python学習】Lv06 GUIとPySide

第7章に突入しました。
7章はGUIを用いてタイムスライダーの色を変えてみましょうというもの。
きました!アニメーションに関係しそうな章です。
しかもGUI。いわゆる専用のツール画面を作って動かすものですね。
 
これがやりたかったんです!
 
では今週の成果まとめです。 
▼ただいまこの本を読み進めています!▼

たっきゅんのガチンコツール開発部 Maya Python 101 (CG Pro Insights)

たっきゅんのガチンコツール開発部 Maya Python 101 (CG Pro Insights)

  • 作者:伊藤 達弘
  • 出版社/メーカー: ボーンデジタル
  • 発売日: 2016/05/27
  • メディア: 大型本

GUICUI

まずはGUIって何よ?ってところから
 

GUI Graphical User Interface 視覚的、直感的に使いやすくするため、画面上に図やアイコンを表示し、それらをマウスで操作する方式
CUI Character User Interface キーボード入力と文字表示のみを用いたソフトウェアの操作体系。キーボードでコマンド名を入力して操作する方式

 
MAYAでいうGUIは視覚的に分かりやすくする為にアイコンやボタンを配置、レイアウトを工夫しましょうというところですね。
f:id:generalion:20200209114212j:plain
シンプルな例としてあげるとこういうものです。
 
作業者としても専用画面で操作できる方が自由度も高く便利となります。

PySide

そしてPySide 名前は聞いた事がありました。
てっきりPythonの別の書き方か何かと思ってましたがGUI作成用のライブラリだったのですね。
 
そして本には書いて無かったのですが PySideはMAYA 2017より PySide2なるものに移行したらしく本の通りにいかない状態に陥りました。その為、読者はPySide2用に補間しつつコードを書いていかないといけません。
これは、そのうち改訂版が出る流れですかね?

from PySide import QtGui
window = QtWidgets.QMainWindow()
window.setWindowTitle('Set Key ')	
window.resize(180, 20)	
window.show()

このようにPySide⇒PySide2に、QtGui⇒QtWidgets に変更しないとダメなようです。

from PySide2 import QtWidgets
window = QtWidgets.QMainWindow()
window.setWindowTitle('Set Key ')	
window.resize(180, 20)
window.show()

分かっている範囲でPySide2になった事でコードが変わっているもの

PySide PySide2
QtGui QtWidgets
shiboken shiboken2

しかも『QtWidgets.QWidget』ってコマンドもあるようです、、、とても紛らわしいっ!
(『QtWidgets』の中の『QWidget』 を見ろって事です、、、)


 
しかし、こういう躓きも悪い事ばかりではありません。
調べたお陰で良さげなページを発見する事ができました!
 ⇒デジタル・フロンティア-Digital Frontier | DF TALK | 祝PySide2デビュー! ~ただひたすらウィジェットを紹介するページ~
 
PySideのサンプルツール!何か凄く楽しそうな雰囲気が出ております。
これはダウンロードして遊んでみたいので後でやってみます!

Qt.pyを導入

PySide2でいろいろTwitterでボヤいておりましたら甘夏ニット様から貴重なアドバイスを頂きました。
なんでもPySide(Qt)のバージョン差分をクッションしてくれるようなモジュールがあるそうなので早速導入してみました! 
 


 
早速、サイトを見に行きましたら、、、

Mayaで使う場合はmayapyでpipを使うなり、Githubから落としてきてPYTHONPATHに通せばおっけーです。

mayapy? pip? Github? PYTHONPATH? と?だらけになってしまいました。
すぐさま質問しようかと思いましたが、そもそも理解していない状況で質問しても答えが理解できないのでは・・・と思ったのでまずは自分で調べる方向にシフト。
果たしてこの1行を理解できるのか!?
 
調査スタートです。(分かってしまえば至極簡単な事なのでしょうけど、今は未だ呪文のようです。) 

mayapy(マヤパイ)

これはMAYAの中にあるPythonを実行するexeの事でした。

C:\Program Files\Autodesk\Maya2019\bin\mayapy.exe

f:id:generalion:20200211151711j:plain
f:id:generalion:20200211151714j:plain
exeを叩いたらMAYA内のPythonが開きました。

pip(パイプ、ピップ?)

なるほど。Pythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システムの事なのですね。
 ⇒pip - Wikipedia
 
『Mayaで使う場合はmayapyでpipを使う』はmayapy.exeでpipを使ってインストールしてねという事でした。

$ pip install Qt.py 

ただ、、、これを実行してみてもうまくいかず。。。
冒頭の$が要らないのかなー?うーん。 とりあえずこの方法は取り止め、もう一つの方法を試してみます。

Github(ギットハブ)

Githubから落としてきてPYTHONPATHに通せばおっけー
 
Githubは単純にリンクされていたページの事でした。
 ⇒GitHub - mottosso/Qt.py: Minimal Python 2 & 3 shim around all Qt bindings - PySide, PySide2, PyQt4 and PyQt5.

ここの右上のclone or downlordで落とせました。
f:id:generalion:20200211151718j:plain
 
しばらくQt.pyのトコを押してたんですけど、これはダウンロードの中身のリストでした。。。ははは

PYTHONPATH(パイソンパス)

これについては環境変数でPYTHONPATHを定義して通すという事ですね。
以下のページを参考にしつつやれば出来るかと思います。
Python内のデフォルトパスを通す方法(Windows, Linux) - Qiita
 
f:id:generalion:20200211151723j:plain 
はい。自分もできました! 
 
これでQt.pyが使えるようになったぽいです。
PySide2のトコをQtに変えても動くようになりました!

from Qt import QtGui, QtWidgets
window = QtWidgets.QMainWindow()
window.setWindowTitle('Set Key ')	
window.resize(180, 20)
window.show()

 
ふぅ。無事にクリアーできて一安心です。

インデントによるエラー

しかし、一難去ってまた一難!
またもや罠にはまりました。
 
f:id:generalion:20200209110416j:plain:w400
よし!コード書けたぞ!MAYAで実行!!!
f:id:generalion:20200209110421j:plain
エラー・・・ 何かインデントで注意されている  どこだ?
  
う、、、分からない。とりあえずタブとスペースを目視できるようにしてみよう。

NotePad++のメニュー
表示>制御文字の表示>半角スペースとタブの表示 にチェック

 
あ!!
半角スペースとTABが混在していたのが原因でした。
f:id:generalion:20200209110424j:plain

これは半角とTABを表示させてないと分からないですね。。。
 
ネットで調べてみると、TAB派とスペース4回派それぞれに言い分があり揉めていました。
以前Youtubeでお世話になった伊沢先生と今西先生はスペース4回派でしたので
自分もスペース4回でやっていたのですが、たっきゅん先生はTAB派のようです。
タイプミスが無いかたっきゅん先生のコードをコピペしていたらこういうエラーに遭遇しました)
 
TABとスペース4回を混在したコードを書いてはいけないという事ですね。
しばらくは半角スペースとタブ表示をONにしてコード書いてみます。
f:id:generalion:20200209112620j:plain
 
躓く事も多いですが乗り越える毎に蓄積している実感があるので、これは個人で経験として積んでいくしかないですね。 

その他のメモ書き

  • ..(ピリオド2つ)はディレクトリの一つ上の階層という意味。

ディレクトリの指定方法は『絶対』と『相対』の2つあり。

絶対パス ドライブから全てのパスを記述したもの
相対パス 現在の位置からの関係を記述したもの

 
絶対、相対共に どこにデータを入れておくかが大事となる。
 

  • whatIs(これは何?) コマンド

Script Editorで whatIs (対象のコマンド); とするとそのmelがどこに置いてあるか教えてくれる
 

今後の流れ

引き続き、ガチンコツール開発部を読み進めます。
 
その後はPythonスタートブックへ。

Pythonスタートブック [増補改訂版]

Pythonスタートブック [増補改訂版]

 
それと更に本格的に学習をしようと思えたならばオンライン学習も視野に入れます。

 ⇒Progate
 ⇒PyQ
  
なんだかこういうサイトまで紹介し出すと商材ブログっぽくて胡散臭い印象になっちゃいますが、主に息子が高校でプログラムを勉強する為の事前リサーチをしているだけです。一番、効果的なのはいったい何なのか。
我が子と自分自身の為に調べている事が読者の皆様の為にもなれば幸いです。
  
いずれ『良さそう』ではなくて『良かった!』と言えるように実体験できればと思っています^^
(挫折しませんように。。。)

まとめ

以上。【Python学習】Lv06 GUIとPySide でした。
 
今回はPySideに翻弄された回となりました。
読む時間より調べる時間の方が長くて1章しか進められず。。。
しかし、その分得たものも多かったぞ!と前向きに捉えるようにします。
 
まだPythonを自分で書けるような実感はありません。
初心者の域を脱しきれていませんが、同じように頑張っている方もいると思うので一緒に頑張っていけたらと思います。
 
自分としてのひとまずのゴールとしては『仕事で役立つツールを1つ作る事』
 
この目標を達成するまでは何としても続けていく所存です!
   
以下、学習が終わったものをまとめておきます

学習済まとめ

Python入門第1回 Pythonの概要 プログラミングを始めよう!
オススメ度 ★★☆☆☆
媒体:Youtube
感想:専門学校講師の伊沢さんが教えてくれる。中盤以降は超初心者にはちょっと難しかった。

 

プログラミング超初心者が初心者になるためのPython入門  
オススメ度 ★★☆☆☆

媒体:本 
感想:Vol1のみAmazonPrimeで無料。1日もあれば読めます。
   分かりやすい文章だったが、情報がちょっと古いのと文字のみなのでやる気がないと読むのは大変かも。

 

【vol.001】Pythonとは | 中学生でもわかるPython入門シリーズ
オススメ度 ★★★★☆
媒体:Youtube
感想:Google Colaboratoryは少々クセがあるが、とても分かりやすい講義です。

 
  
それではまたある程度進んだらまとめます!

次回


プライバシーポリシー お問い合わせ