這個章節有一些關於GUI高級用法的細節。
一些支持GUI的Python函數。
給定按鈕的 kind 類型,返回那個按鈕對應的標準樣式特性的字典數據。字典中包括:
background
padding
xsize
ysize
(需要注意,如果 kind 的值是字串“nvl_button”,就會尋找gui.nvl_button_background配置項的值。)
background是一個frame,使用以下第一個能匹配到的文件作為其背景圖:
如果某個GUI變數名為gui.kind_borders存在就使用。否則,使用 gui.button_borders
。如果gui.kind_tile存在,他決定邊界是否使用tile風格, gui.button_tile
項控制tile。
[prefix_]代表的意思,詳見 樣式前綴搜索 。
給定按鈕的 kind 類型,返回那個按鈕對應的標準樣式特性的字典數據。字典中包括:
font
size
xalign
text_align
layout
還有一些變數設置文本的 color
樣式特性(property)。
所有其他的 文本樣式特性 都是可用的。例如,gui.kind_text_outlines設置輪廓線樣式特性,gui.kind_text_kerning設置字偶距等等。
gui.
init
(width, height) link初始化GUI。
gui.
rebuild
() link重建GUI。
gui.
text_properties
(kind=None, accent=False) link給定按鈕的 kind 類型,返回那個按鈕對應的標準樣式特性的字典數據。字典中包括:
font
size
xalign
text_align
layout
還有一些變數設置文本的 color
樣式特性(property)。
所有其他的 文本樣式特性 都是可用的。例如,gui.kind_text_outlines設置輪廓線樣式特性,gui.kind_text_kerning設置字偶距等等。
gui.rebuild函數是一個非常慢的函數,更新整套GUI以適應Ren’Py當前的狀態。它的處理的內容包括:
define
語句。translate python
語句塊(block)。style
語句。注意, gui.rebuild
中 init python
語句塊不會重新運行。使用這種方式定義:
define gui.text_size = persistent.text_size
跟使用這種方式定義:
init python:
gui.text_size = persistent.text_size
在調用gui.rebuild後得到的結果不同。
應用於 gui
命名空間時, default
語句會改變語義。default語句與define語句穿插運行,調用 gui.rebuild()
函數時default語句不會重新運行。
這表示,如果我們有如下語句:
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也支持GUI環境設定設置(preference)系統,包括一個函數和一系列行為(action)。
gui.
SetPreference
(name, value, rebuild=True) link這個行為(action)將名為 name 的環境設定設置項的值設置為 value 。
gui.rebuild()
會讓修改生效。這項應該始終為True,除了存在多個gui.SetPreference行為的情況。那種情況除了最後一個設置為True其他都設置為False。這是一個非常慢的行為,所以不適合在按鈕處於指針懸垂(hover)狀態時使用。
gui.
TogglePreference
(name, a, b, rebuild=True) link這個行為切換gui中名為 name 的環境設定設置在值 a 和 b 之間切換。當這個值等於 a 時表示該項被選中。
gui.rebuild()
會讓修改生效。這項應該始終為True,除了存在多個gui.SetPreference行為的情況,那種情況除了最後一個設置為True其他都設置為False。這是一個非常慢的行為,所以不適合在按鈕處於指針懸垂(hover)狀態時使用。
gui.
preference
(name, default=<renpy.python.RevertableObject object at 0x7f77abf8a6d0>) link這個函數返回gui中名為 name 的環境設定設置的值。
當透過調用 gui.preference()
函數,使用環境設定設置名稱和預設值定義變數後,就能使用GUI環境設定設置系統了。例如,我們可以環境設定配置文本字體和字號:
define gui.text_font = gui.preference("font", "DejaVuSans.ttf")
define gui.text_size = gui.preference("size", 22)
使用 gui.SetPreference()
和 gui.TogglePreference()
行為可以添加和修改環境設定配置的值。這是添加到環境設定配置界面的樣例:
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)