こんにちは!ビーバー@ゲーム業界歴約20年python勉強中 です。
maya python初心者の方のために、カンタン・わかりやすい解説サイトを作っています。
PySideを使ってみたいけど、なんか難しくてよくわからん、、
PySideでGUI作成を学習しようとすると、
突然クラスやら知らない用語が大量に出てきて、、、とても難しそうに感じますよね。
このページでは、PySideを使うはじめの一歩を、用語の説明もいれながら詳しく解説していきます。
私がPySideを勉強しながらわかったことをまとめていくので、
初心者の方にも理解しやすい内容になっていると思います。
それではGO☆
※今回の内容は、こちらの書籍を参考に書いています。
※当サイトで紹介する商品は、アフィリエイトプログラムを利用しています。
このチュートリアルでやること
このチュートリアルでは、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で使えるようにしたものなんだ。
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()でボタンを表示させることができます。
ウィンドウを表示してみる
次に、空のウィンドウを作ってみましょう。
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作成ページや、参考になる書籍、学習サイトなども紹介しているので
見てみてくださいね!
※今回の内容は、こちらの書籍を参考に書いています。
コメント