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パラメタを持っている。なんか一貫性なし。やな感じ。

なんともイカツイ実装ですなあ。