高度な GUI link
この章では gui の高度な使用についての雑多な事柄を扱います。
Python 関数 link
GUI をサポートするPython関数がいくつかあります。
- gui.button_properties(kind) link
ボタンの kind を指定すると、そのボタンの標準のスタイルプロパティーの辞書を返します。これは以下の組み合わせです。 :
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, fov=75) link
GUI を初期化します。
- width
デフォルトウィンドウの幅です。
- height
デフォルトウィンドウの高さです。
- fov
3d ステージの視野です。
- gui.rebuild() link
GUIを再構築します。
これはかなり遅い関数であることに注意してください。
- gui.text_properties(kind=None, accent=False) link
ボタンの kind を指定すると、そのボタンの標準のスタイルプロパティーの辞書を返します。これは以下の組み合わせです。またテキストボタンの kind を指定すると、ボタン内のテキストの標準のスタイルプロパティーの辞書を返します。これは以下の組み合わせです。 :
font
あれば gui.kind_text_font へのものです。
size
(あれば) gui.kind_text_size へのものです。
xalign
(あれば) gui.kind_text_xalign へのものです。
textalign
(あれば) 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 へのものです。
他のすべての テキストスタイルプロパティー も利用可能です。 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.button_text_properties(kind=None, accent=False):
gui.text_properties()
の廃止されたエイリアスです。
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
このアクションは name の gui preference を value に設定します。
- rebuild
デフォルトでは True で、
gui.rebuild()
を呼び出して変更を反映します。これは一般的に True ですが、 gui.SetPreference アクションが複数の場合は最後の1つ以外すべて False であるべきです。
これはとても遅いアクションで、ボタンがホバーされるときの使用には適さないでしょう。
- gui.TogglePreference(name, a, b, rebuild=True) link
このアクションは name の gui preference を a と b の値でトグルします。値が a と等しければ、選択状態になります。
- rebuild
デフォルトでは True で、
gui.rebuild()
を呼び出して変更を反映します。これは一般的に True ですが、 gui.SetPreference アクションが複数の場合は最後の1つ以外すべて False であるべきです。
これはとても遅いアクションで、ボタンがホバーされるときの使用には適さないでしょう。
- gui.preference(name, default=...) 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.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)