maya PySide はじめてのウィンドウ作成

pyside-firstwindow GUI作成

こんにちは!ビーバー@ゲーム業界歴約20年python勉強中 です。
maya python初心者の方のために、カンタン・わかりやすい解説サイトを作っています。

ピヨちゃん
ピヨちゃん

PySideを使ってみたいけど、なんか難しくてよくわからん、、

PySideでGUI作成を学習しようとすると、
突然クラスやら知らない用語が大量に出てきて、、、とても難しそうに感じますよね。

このページでは、PySideを使うはじめの一歩を、用語の説明もいれながら詳しく解説していきます。
私がPySideを勉強しながらわかったことをまとめていくので、
初心者の方にも理解しやすい内容になっていると思います。

このチュートリアルでわかること
  • はじめてのPySide。使い方、インポート
  • QMainWindowを使ったウィンドウの作成
  • ウィンドウへのボタン配置

それではGO☆

※今回の内容は、こちらの書籍を参考に書いています。

※当サイトで紹介する商品は、アフィリエイトプログラムを利用しています。

このチュートリアルでやること

このチュートリアルでは、PySide2を使ってボタンとウィンドウの表示を行います。

  • ボタンを表示してみる
  • ウィンドウを表示してみる
  • ウィンドウにボタンを配置してみる

maya2020、PySide2を使う前提で解説していきます。

ボタンを表示してみる

mayaのスクリプトエディタに、以下のように書いて実行してみましょう!

from PySide2.QtWidgets import QPushButton

window = QPushButton(u"ボタン")
window.show()

ボタンだけのウィンドウが表示されました。

スクリプトはどういう仕組みで動いているのでしょうか?1行目から順番に解説します。

from PySide2.QtWidgets import QPushButton

ここでは、PySide2のなかの、QWidgetsというモジュール(機能群)から、
QPushButtonというボタン機能をインポートしています。

インポートとは、外部にある「特定の機能が保存されたpythonファイル」を
maya内で使えるように、読みこむことを指します。

>> pythonファイルの保存、インポートについて知りたい方はこちら

QWidgets(ウィジェット)って?

QWidgetsとは、GUIのいろいろなパーツを カンタンに作ることができる機能をまとめたものです。

ウィジェット、と出てきたら、ボタンとかテキストフィールドなど、
UIパーツのことなんだな、とおぼえておけばOKです。

ハムちゃん
ハムちゃん

頭にQがついているのは、「Qt(キュート)」の機能、という意味だよ。
PySideは、QtをPythonで使えるようにしたものなんだ。

>> Qtって何?という方はこちら

PySideはアプリケーションを開発できる様々な機能がありますが、
その機能のうち、UIパーツを作成するQWidgetsを使っていきます。

参考:Qt5.15公式ドキュメント(QWidgets) https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/index.html#module-PySide2.QtWidgets

QPushButtonって?

UIパーツ作成 QWidgets の中の、ボタンを作る機能です。

参考:Qt5.15公式ドキュメント(QPushButton)https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/QPushButton.html

window = QPushButton(u"ボタン")

スクリプトのこの部分で、ボタンを作成しています。
QPushButton() のカッコの中に文字列を入れると、ボタンに名前をつけられます。
u“ボタン” と、ダブルクオーテーションの前に uをつけると、文字化けを防ぐことができます。

window.show()

QPushButtonが代入された変数.show()でボタンを表示させることができます。

ボタンはmayaに紐づけられていないので、
mayaのメインウィンドウをクリックすると、mayaの後ろに行ってしまいます。
そんな時は、alt長押し + tabキーで ウィンドウ切り替えしてみましょう。

ウィンドウを表示してみる

次に、空のウィンドウを作ってみましょう。

from PySide2.QtWidgets import QMainWindow,QPushButton

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        
        self.setWindowTitle(u"はじめてのウィンドウ")
     
        
window = MainWindow()
window.show()

タイトルは「はじめてのウィンドウ」にしてみました。
スクリプトはどういう仕組みで書かれているのでしょうか?

from PySide2.QtWidgets import QMainWindow,QPushButton

新しく「QMainWindow」をインポートしています。
ウィンドウは「QMainWindow」を使って作ります。

QMainWindowって?

QMainWindowは、空のウィンドウを作るクラスです。
今の段階では、「クラス」とは「機能をつくる設計書」なんだな、とおぼえればOKです。

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        
        self.setWindowTitle(u"はじめてのウィンドウ")

この4行で「空のウィンドウを作る」クラスを宣言しています。

  • MainWindowという名前(自分で任意に決められる)のクラスを作る
  • MainWindowは、QMainWindowの機能を引き継ぐ
  • ウィンドウのタイトル名を「はじめてのウィンドウ」にする

クラスは、機能の設計をするだけなので、
実際にウィンドウを作っているのは以下の行です。

window = MainWindow()
window.show()

>> クラスについて詳しく知りたい方はこちらから
【maya python GUI】クラスってなあに?その1
【maya python GUI】クラスってなあに?その2
【maya python GUI】クラスってなあに?その3

ウィンドウにボタンを配置してみる

空のウィンドウにボタンを配置してみましょう。

from PySide2.QtWidgets import QMainWindow,QPushButton

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setWindowTitle(u"はじめてのウィンドウ")
        button = QPushButton(u"ボタン")
        self.setCentralWidget(button)
        
window = MainWindow()
window.show()

MainWindowのクラスの中に、ボタンを作る以下の2行を追加しました。

        button = QPushButton(u"ボタン")
        self.setCentralWidget(button)
ピヨちゃん
ピヨちゃん

そっか!クラスっていう機能を作る設計書の中に
ボタンを作るのも入れちゃったんだね!

ハムちゃん
ハムちゃん

そうだよ~!
だから、あとは設計書にそってウィンドウを作る、という風に書けばOKなんだ。

ウィンドウを作る2行は同じです。

window = MainWindow()
window.show()

まとめ

今回は、PySideを使うはじめの一歩をご紹介しました。
難しく見えるスクリプトも、要素をひとつずつ確認することで理解していけます。

あせらず、順を追って必要な知識を習得することで、
だんだんと作りたいものが作れるようになっていきますよ!

ちょっとわかりづらいな、、というところがあったら、
このサイトのGUI作成ページや、参考になる書籍、学習サイトなども紹介しているので
見てみてくださいね!

※今回の内容は、こちらの書籍を参考に書いています。

maya pythonでGUIを作ろう!

maya pythonでGUIを作る方法をもっと知りたい方はこちら。

cmdsで作る方法・PySideの紹介・PySideのかんたんなチュートリアルをまとめています。
PySideを使うときに必要になる、「クラス」についても徹底解説!

コメント

タイトルとURLをコピーしました