2019年09月12日

ビットマップペイントツールのチュートリアルをやってみた その249 3dsmax 2019

引き続きMAXScriptマニュアルに載っている「チュートリアル-ビットマップペイントツールを9つの簡単なステップで作成する」 の続きを考えて見たい。


前回のプログラムで「MyDialog」クラスのオブジェクトを生成する時に、継承元である「QDialog」の初期化メソッド「__init__()」に何も引数を与えなかった。


「QDialog」の初期化メソッドに渡されるパラメータは以下のようになっている。


「f」はダイアログボックスのウインドウのスタイルを決めるためのフラグで、ここに様々な値を設定する事で閉じるボタンを消したりとかタイトルバーを消したりなどが出来る。


「parent」はダイアログの親のウインドウが設定出来て、親がある場合はその中央にダイアログボックスが現れるようになる。親が無い場合(前回の場合)、メインディスプレイのデスクトップの中央にダイアログボックスが出現するようだ。



class PySide.QtGui.QDialog([parent=None[, f=0]])

Parameters:
 f – PySide.QtCore.Qt.WindowFlags
 parent – PySide.QtGui.QWidget


3dsMaxのメインウインドゥの中央にダイアログを出したい場合は、「MaxPlus.GetQMaxMainWindow()」でMaxのメインウインドウを取得して、初期化メソッドに引数として渡してやればいい。下のプログラムが改良版だ。



from PySide2 import QtWidgets
import MaxPlus

class MyDialog(QtWidgets.QDialog):
def __init__(self, parent=MaxPlus.GetQMaxMainWindow()):
super(MyDialog, self).__init__(parent)
self.resize(250, 100)
w = MyDialog()
w.show()


これを実行すれば常にダイアログボックスはMaxの中央に出現する。


上のプログラムでは「MyDialog」クラスの初期化メソッドの引数として「parent」を定義して、そのデフォルト値として「MaxPlus.GetQMaxMainWindow()」を与えている。だから「w = MyDialog()」で引数無しで「MyDialog」のオブジェクトを生成した場合、「parent」には「MaxPlus.GetQMaxMainWindow()」がセットされて、「QtWidgets.QDialog」の初期化メソッドの引数としてそれが渡される事になる。


もし「w = MyDialog(other_parent)」のように引数を与えれば、その引数が「parent」に渡されてこのダイアログボックスの親になるわけだ。


続きはまた次回。


maxまとめページ



take_z_ultima at 11:30│Comments(0)3ds Max | CG

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives