この章では gui の高度な使用についての雑多な事柄を扱います。
GUI をサポートするPython関数がいくつかあります。
ボタンの 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 変数 gui.kind_borders があればそれが使用され、そうでなければ gui.button_borders
が使用されます。 gui.kind_tile があれば、それが Borders がタイリングされるかを決定し、そうでなければ gui.button_tile
がタイリングを制御します。
[prefix_] の意味は スタイル接頭辞検索 を参照してください。
gui.
init
(width, height, fov=75) linkGUI を初期化します。
デフォルトウィンドウの幅です。
デフォルトウィンドウの高さです。
3d ステージの視野です。
gui.
rebuild
() linkGUIを再構築します。
これはかなり遅い関数であることに注意してください。
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
スタイルプロパティーを設定する変数も複数あります。
あれば gui.kind_text_colorへのものです。変数が設定されておらず、 accent が True ならば、テキストの色をデフォルトのアクセントカラーに設定します。
(あれば) gui.kind_text_insensitive_color へのものです。
(あれば) gui.kind_text_idle_color へのものです。
(あれば) gui.kind_text_hover_color へのものです。
(あれば) gui.kind_text_selected_color へのものです。
他のすべての テキストスタイルプロパティー も利用可能です。 kind が None でないときは、 位置スタイルプロパティー も利用可能です。例えば gui.kind_text_outlines は outline スタイルプロパティーを設定し、 gui.kind_text_kerning はカーニングを設定します。
gui.
variant
(f, variant=None) linkデコレーターは gui が最初の初期化時および再構築時のたびに関数が呼び出されるようにします。これは次の形式で関数のデコレーターとしての使用を意図しています。
@gui.variant
def small():
gui.text_size = 30
# ...
f (関数)とスクリーン variant を指定する variant (文字列)で呼び出しても使えます。
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
名前空間の変数に適用されると、 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 の一部を変更可能になります。
Ren'Py は1つの関数に対応するアクションから成る GUI Preference システムもサポートしています。
gui.
SetPreference
(name, value, rebuild=True) linkこのアクションは name の gui preference を value に設定します。
デフォルトでは True で、 gui.rebuild()
を呼び出して変更を反映します。これは一般的に True ですが、 gui.SetPreference アクションが複数の場合は最後の1つ以外すべて False であるべきです。
これはとても遅いアクションで、ボタンがホバーされるときの使用には適さないでしょう。
gui.
TogglePreference
(name, a, b, rebuild=True) linkこのアクションは name の gui preference を a と b の値でトグルします。値が a と等しければ、選択状態になります。
デフォルトでは True で、 gui.rebuild()
を呼び出して変更を反映します。これは一般的に True ですが、 gui.SetPreference アクションが複数の場合は最後の1つ以外すべて False であるべきです。
これはとても遅いアクションで、ボタンがホバーされるときの使用には適さないでしょう。
gui.
preference
(name, default=...) linkこの関数は name の gui preference の値を返します。
指定されると、この値はその gui preference のデフォルトの値になります。デフォルト値はその preference が最初に使用される時に指定されなければいけません。
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.SetPreference
と gui.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)