这个章节有一些关于GUI高级用法的细节。
一些支持GUI的Python函数。
给定按钮的 kind 类型,返回那个按钮对应的标准样式特性的字典数据。字典中包括:
backgroundpaddingxsizeysize(需要注意,如果 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 类型,返回那个按钮对应的标准样式特性的字典数据。字典中包括:
fontsizexaligntext_alignlayout还有一些变量设置文本的 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 类型,返回那个按钮对应的标准样式特性的字典数据。字典中包括:
fontsizexaligntext_alignlayout还有一些变量设置文本的 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)