Ren’Pyでモーダルダイアログを使わず直接テキストを入力する

Ren’Pyのテキスト入力は基本的に入力用のスクリーンを表示し、その結果を受け取るというものになります(tutorialではテキストウィンドウから入力するようにしています)。しかし、ダイアログを呼び出さないで直接入力したい場合もあるでしょう。そのまま入力を可能にするスクリプトがこちらで紹介されていました。
lemma forum http://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=31289


init python:
    firstname = "太郎"
    lastname = "山田"
    def name_func(newstring):
        store.firstname = newstring
    def lastname_func(newstring):
        store.lastname = newstring

screen name_input():
    imagemap:
        ground "gui/clipboard.png"
        hbox xalign 0.6 yalign 0.20:
            text "{color=#000000}First Name:"
            button:
                id "name_input1"
                xysize (250, 25)
                action NullAction()
                add Input(size=30, color="#ff0066", default=firstname, changed=name_func, length=10, button=renpy.get_widget("name_input","name_input1")) yalign 1.0
        hbox xalign 0.6 yalign 0.30:
            text "{color=#000000}Last Name:"
            button:
                id "name_input2"
                xysize (250, 25)
                action NullAction()
                add Input(size=30, color="#ff0066", default=lastname, changed=lastname_func, length=10, button=renpy.get_widget("name_input","name_input2")) yalign 1.0     

テキストが書き換えられるたび、changedで指定した関数に入力された文字列が渡されます。この例ではボタンのアクションにNullActionを指定していますが、Enterで別の関数を実行することも出来ます。


コメントを残す

メールアドレスが公開されることはありません。