【maya cmds】GUIにテキストフィールドを入れる方法を解説!

textField GUI作成

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

今日は、maya cmdsで作ったGUIに、
テキストフィールドを入れる方法を解説していきたいと思います!

>> GUI作成について詳しく知りたい方はこちら

>> Pythonの勉強方法を知りたい方はこちらをどうぞ

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

textField()のカンタン解説

テキストフィールドを作るコマンドは textfield() です。

テキストフィールドを作るコマンド

cmds.textfield()

ハムちゃん
ハムちゃん

それじゃあさっそく、コマンドの機能をカンタンに解説していくよ!

テキストフィールドを作成する

テキストフィールドをウィンドウに配置してみましょう!

from maya import cmds
window = cmds.window()
layout = cmds.columnLayout( parent=window )
button = cmds.button( parent=layout)
text_field = cmds.textField( parent=layout )
cmds.showWindow()

ウィンドウにボタンとテキストフィールドができました。
テキストフィールドを作成した1行はこちらです。

text_field = cmds.textField( parent=layout )
ピヨちゃん
ピヨちゃん

parent=layout っていうのは何かな?

ハムちゃん
ハムちゃん

それは、テキストフィールドノードの親を指定しているんだよ!
親子づけの指定をしておくと、フィールドが意図してないウィンドウにくっついちゃった
みたいなのを防ぐことができるよ。

親ノードの指定はparentフラグを使って行います。

テキストフィールドの親ノードを指定する

cmds.textfield( parent=”親ノードの名前”)

ちなみに、layout変数や text_field変数を実行すると、
中に入っているレイアウトノードや、テキストフィールドノード名を確認することができます。

デフォルトで表示するテキストの指定

次に、デフォルトで表示させるテキストを指定してみましょう!
テキストフィールドを作成する一行を、以下のように変更します。

cmds.textField( text="Apple", parent=layout )
ピヨちゃん
ピヨちゃん

おお!フィールドに「Apple」って入った!!

デフォルトで表示するテキストの指定は、textフラグを使って行います。

表示するテキストを指定する

cmds.textfield( text=”○○○○”)

ハムちゃん
ハムちゃん

OK!これでテキストフィールドを作って、文字を表示させる方法がわかった。
次は、ユーザが入力した文字列を取得する方法をみてみよう

フィールドに入力された文字列の取得

テキストフィールドに入力された文字列を取得するには、
textField()のクエリモードを使います。

word = cmds.textField(text_field, q=True, text=True)
ピヨちゃん
ピヨちゃん

q=True っていうのがクエリモードをオンにしているのかな?
っていうかクエリモードって何、、、(泣)

ハムちゃん
ハムちゃん

こういうの、コマンドリファレンスで見たことない?

ピヨちゃん
ピヨちゃん

あっ!!見おぼえあるよ、、、!

モードとは、pythonコマンドの動作を指定するフラグです。

  • 「C」クリエイトモード
    コマンドのデフォルトとなるモード。ノードを作成する動作
    モードの指定をしなければ、自動でクリエイトモードの動作になる
  • 「Q」クエリモード
    ノードを問い合わせするモード。すでに作成済みノードの各種値などを照会する
  • 「E」エディットモード
    エディット、つまり編集モード。
    ノードの持っている値などを編集するときにエディットモードを指定する
ピヨちゃん
ピヨちゃん

よくわかったよ~!コマンドの動作を指定するフラグだったんだね。

話を戻して、
テキストフィールドに入力された文字列を取得するには、
textField()のクエリモードを使います。

テキストフィールドに入力された文字列を取得する

cmds.textField( “取得するノード名”, q=True, text=True)

スクリプトにすると以下のようになります。

word = cmds.textField(text_field, q=True, text=True)

このように書くことで、テキストフィールドに入力されている文字列が 変数wordの中に入ります
試しに、以下のように実行してみましょう。

ピヨちゃん
ピヨちゃん

#結果:Orange# ってかえってきたね。
ちゃんとフィールドのテキストを取得しているよ~!

簡単なツールにしてみよう

textField()を使って、簡単なツールを作ってみましょう。
ボタンを押すと、入力された文字+ゲットだぜ!を表示するツールです。

ピヨちゃん
ピヨちゃん

これをつくるには、まず、、、?
print(word + ” gotcha!!”) って書けば、
②文字列 + gotcha!! を表示はできるかな?

ハムちゃん
ハムちゃん

そうそう!word変数には、フィールドに入力された文字列をいれてあるからね。
フィールドの文字列取得と、プリントの処理をまとめて
getText()っていう関数にしてみよう。

def getText():
    word = cmds.textField(text_field, q=True, text=True)
    print(word + " gotcha!!")
ハムちゃん
ハムちゃん

このgetText関数を、UIのボタンに仕込めばいいわけだ☆

ボタンを押したら実行するコマンドは、
buttonコマンドのcommandフラグで指定するよ!

from maya import cmds
window = cmds.window()
layout = cmds.columnLayout( parent=window )
button = cmds.button( parent=layout, command="getText()" )
text_field = cmds.textField( text="Apple", parent=layout )
cmds.showWindow()

def getText():
    word = cmds.textField(text_field, q=True, text=True)
    print(word + " gotcha!!")
ハムちゃん
ハムちゃん

4行目で、ボタンにgetText()関数をしこんでいるよ!
それじゃあ実行してみよう!

ピヨちゃん
ピヨちゃん

スクリプトを実行したところだね。ウィンドウができた!

そしたら、フィールドのテキストを「Orange」に変えてボタンを押してみるね。

ピヨちゃん
ピヨちゃん

おーーーーー!やったあ!!オレンジ、ゴッチャ~~~~☆

ハムちゃん
ハムちゃん

やったね!

まとめ

今回は、テキストフィールドの作り方をご紹介しました!
GUIにテキストフィールドを作るには、textfield() を使います。

テキストフィールドを作るコマンド

cmds.textfield()

テキストフィールドを作るときは、親のノードを指定するようにしましょう!

テキストフィールドの親ノードを指定する

cmds.textfield( parent=”親ノードの名前”)

デフォルトで表示するテキストは textフラグで指定できます。

表示するテキストを指定する

cmds.textfield( text=”○○○○”)

フィールドに入力された文字の取得はtextFieldのクエリモードを使います。

テキストフィールドに入力された文字列を取得する

cmds.textField( “取得するノード名”, q=True, text=True)

ハムちゃん
ハムちゃん

word = cmds.textField( “取得するノード名”, q=True, text=True)
取得した文字列は、こんな風に変数に入れておくと使いやすいよ!

以上、テキストフィールドの作り方でした!
また読みに来てくださいね。

maya pythonでGUIを作ろう!

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

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

はじめてpython学習するなら!

はじめてプログラミングを勉強するとき、エラーはつきものですよね。
何時間もスクリプトが動かないこともしばしば。。
そんな時、くわしい人に教えてもらいたい、と思うことはありませんか?

侍テラコヤは、はじめてpythonを学習する方にピッタリのサービスです。
サブスク型オンラインスクールで、月¥2980~の良心的なお値段!

現役エンジニアのサポートが充実しており、
オンラインのマンツーマンレッスンとQ&A掲示板で即座に悩みを解決することができます

maya python基礎

本サイトの【まとめ】 maya python 基礎 入門!では、
10回シリーズでmaya pythonの基礎が習得できるコンテンツを発信しています。

  • ちまたのスクリプトを読んで、内容を理解したい
  • mayaのスクリプトリファレンスの読み方を習得したい
  • 自分で簡単なツールを書きたい
  • 基礎的なmayaコマンドをpythonで使えるようになりたい

など、mayaでpython基礎を身に着けたい方は、ぜひご活用ください♪

コメント

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