Advanced GUI link

この章では gui の高度な使用についての雑多な事柄を扱います。

Python 関数 link

GUI をサポートするPython関数がいくつかあります。

gui.button_properties(kind) link

ボタンの kind を指定すると、そのボタンの標準的なスタイルプロパティーの辞書を返します。これは以下の set です。 :

background

下記に記述します。

padding

(あれば) gui.kind_borders.padding へのものです。

xsize

(あれば) gui.kind_widthへのものです。

ysize

(あれば) gui.kind_height へのものです。

(kind が文字列 "nvl_button"ならば、これは gui.nvl_button_background 変数の方を探すことに注意してください)

background は以下のうち最初にあったものをその背景画像とするフレームです。

  • gui/button/kind_[prefix_].background.png
  • gui/button/[prefix_].background.png

gui 変数 gui.kind_borders があればそれが使用され、そうでなければ gui.button_borders が使用されます。 gui.kind_tile があれば、それが Borders がタイリングされるかを決定し、そうでなければ gui.button_tile がタイリングを制御します。

[prefix_] の意味は スタイル接頭辞検索 を参照してください。

gui.init(width, height) link

GUI を初期化します。

width

デフォルトウィンドウの幅です。

height

デフォルトウィンドウの高さです。

gui.rebuild() link

GUIを再構築します。

これはかなり遅い関数であることに注意してください。

gui.text_properties(kind=None, accent=False) link

ボタンの kind を指定すると、そのボタンの標準的なスタイルプロパティーの辞書を返します。これは以下の set です。 :

font

あれば gui.kind_text_font へのものです。

size

(あれば) gui.kind_text_size へのものです。

xalign

(あれば) gui.kind_text_xalign へのものです。

text_align

(あれば) gui.kind_text_xalign へのものです。

layout

gui.kind_text_xalign が 0 以上 1 以下なら、 "subtitle" へのものです。

テキストの color スタイルプロパティーを設定する変数も複数あります。

color

あれば gui.kind_text_colorへのものです。変数が設定されておらず、 accent が True ならば、テキストの色をデフォルトのアクセントカラーに設定します。

insensitive_color

(あれば) gui.kind_text_insensitive_color へのものです。

idle_color

(あれば) gui.kind_text_idle_color へのものです。

hover_color

(あれば) gui.kind_text_hover_color へのものです。

selected_color

(あれば) gui.kind_text_selected_color へのものです。

すべての他の テキストスタイルプロパティー も利用可能です。例えば gui.kind_text_outlines は outline スタイルプロパティーを設定し、 gui.kind_text_kerning はカーニングを設定します。

guit.rebuild link

gui.rebuild 関数は GUI を更新して Ren'Py の 現在の状態を反映するやや遅い関数です。これは以下のことをします。 :

  • gui 名前空間で変数を定義するすべての define ステートメントを再実行します。

  • 現在の言語ですべての translate python ブロックをを再実行します。

  • すべての style ステートメントを再実行します。

  • システムのすべてのスタイルを再構築します。

init python ブロックは gui.rebuild で再実行されないことに注意してください。このため

define gui.text_size = persistent.text_size

init python:
    gui.text_size = persistent.text_size

は異なります。

default ステートメント, gui 名前空間, gui.rebuild link

default ステートメントが gui 名前空間に適用されると意味が変わります。 gui 名前空間の変数に適用されると、 default ステートメントの実行に define ステートメントが挟まれ、default ステートメントは gui.rebulid() が呼び出されても再実行されません。

つまり、以下のコードがあるとすると

default gui.accent_color = "#c04040"
define gui.hover_color = gui.accent_color

ゲームの最初の起動時、accent color が設定され、hover color は accent color に設定されます(共に様々なスタイルの色に使用されます)。

しかし、ゲームスクリプトとして以下のソースがあると

$ gui.accent_color = "#4040c0"
$ gui.rebuild()

Ren'Py は define のみを再実行し、 hover color を accent color に設定し、スタイルを更新します。これにより、ゲーム中に gui の一部を変更可能になります。

GUI Preferences link

Ren'Py は1つの関数とペアのアクションで成る GUI Preference システムもサポートしています。

gui.SetPreference(name, value, rebuild=True) link

このアクションは gui preference namevalue に設定します。

rebuild

デフォルトでは True で、 gui.rebuild() を呼び出して変更を反映します。これは一般的に True ですが、 gui.SetPreference アクションが複数の場合は最後の1つ以外すべて False であるべきです。

これはとても遅いアクションで、ボタンがホバーされるときの使用には適さないでしょう。

gui.TogglePreference(name, a, b, rebuild=True) link

このアクションは name の gui preference を ab の値でトグルします。値が a と等しければ、選択状態になります。

rebuild

デフォルトでは True で、 gui.rebuild() を呼び出して変更を反映します。これは一般的に True ですが、 gui.SetPreference アクションが複数の場合は最後の1つ以外すべて False であるべきです。

これはとても遅いアクションで、ボタンがホバーされるときの使用には適さないでしょう。

gui.preference(name, default=<renpy.python.RevertableObject object at 0x7fab05c629d0>) link

このアクションは name の gui preference の値を返します。

default

指定されると、この値はその gui preference のデフォルトの値になります。デフォルト値はその preference が最初に使用される時に指定されるべきです。

link

GUI preference システムは変数定義時に、Preference の名前とデフォルト値とともに gui.preference() を呼び出して使用します。例えば、 gui preferences を使用してテキストのフォントとサイズを定義できます。

define gui.text_font = gui.preference("font", "DejaVuSans.ttf")
define gui.text_size = gui.preference("size", 22)

こうすると、 gui.SetPreferencegui.TogglePreference アクションを使用して、 preferences の値の変更が可能になります。こちらは Preferences スクリーンに追加できるいくつかの例になります。

vbox:
    style_prefix "check"
    label _("Options")
    textbutton _("OpenDyslexic") action gui.TogglePreference("font", "OpenDyslexic-Regular.otf", "DejaVuSans.ttf")

vbox:
    style_prefix "radio"
    label _("Text Size")
    textbutton _("Small") action gui.SetPreference("size", 20)
    textbutton _("Medium") action gui.SetPreference("size", 22)
    textbutton _("Big") action gui.SetPreference("size", 24)