GUIによる文字入力
普通に GUI出す場合の基本は
from Blender import Draw def event(event, value): # proc for general event (raw mouse and key actions) def button_event(event): # proc for (more abstruct) button related event def gui(): # gui component "redraw" proc Draw.Register(gui, event, button_event)
とかしてやるだけで何かしらGUIコンポーネントが現れる。キーアサインとか出来るのかどうかはまだ調べ切れていない。
gui() にて使う描画概念は OpenGLの2Dグラフィックスの概念と同様みたい。ありがたい。実際の描画にはBGLをインポートすべし。
ちなみに目的となる文字入力ウィジェットは Draw.String("name: ", event, x, y, width, height, initial string, maxlen) みたいなので出せるが、当然のように日本語入力には対応していないし、コピペも受け付けなかった。さてどんな手で行こうかな。ワクワク。
#ソース改変なしは無理かな・・・別窓になってしまうが、Tkinterとかでなんとかならんだろうか
以下自分向け備忘録。
- Draw.Exit()を呼び出すと GUI窓を閉じれる。
- Draw.LEFTMOUSE|MIDDLEMOUSE|RIGHTMOUSE :マウス操作の場合はvalue は Noneっぽい
- Draw.AKEY ... Draw.ZKEY : ZKEYってなんか勘違いしそう
- Draw.ESCKEY
- Draw.SPACEKEY|BACKSPACEKEY
- Draw.Redraw() : 引数に not 0 を与えると(入力イベントに対して)優先的に描画(要はすぐ描画)
- 他のウィンドウの Redraw() 呼び出すべからず
- dangling にするとメモリリークの危険性。必ずグローバル変数で受けておく
- 単なるテキストを表示するDraw.Text()はglRasterPos*()で場所していしなきゃいけないのに Draw.String()はコンストラクタ内にx,yパラメタを持っている。なんか一貫性なし。やな感じ。
なんともイカツイ実装ですなあ。