高级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是一个frame,使用以下第一个能匹配到的文件作为其背景图:
gui/button/kind_[prefix_].background.png
gui/button/[prefix_].background.png
如果某个GUI变量名为gui.kind_borders存在就使用。否则,使用
gui.button_borders
。如果gui.kind_tile存在,他决定边界是否使用tile风格,gui.button_tile
项控制tile。[prefix_]代表的意思,详见 样式前缀搜索 。
- gui.init(width, height) link
初始化GUI。
- width
默认窗口宽度。
- height
默认窗口高度。
- fov
3D舞台的视野(field of view)。
- gui.rebuild() link
重建GUI。
- gui.text_properties(kind=None, accent=False) link
给定按钮的 kind 类型,返回那个按钮对应的标准样式特性的字典数据。字典中包括:
font
用于gui.kind_text_font,前提是它存在。
size
用于gui.kind_text_size,前提是它存在。
xalign
用于gui.kind_text_xalign,前提是它存在。
text_align
用于gui.kind_text_xalign,前提是它存在。
layout
用于“subtitle”,前提是gui.kind_text_xalign大于0小于1。
还有一些变量设置文本的
color
样式特性(property)。- color
用于gui.kind_text_color,前提是它存在。如果变量没有设置,那么 accent 的值是True,将文本颜色设置为默认的强调(accent)色。
- 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设置outlines样式特性,使用gui.kind_text_kerning设置行距,等等
- variant(f, variant=None) link
函数装饰器,在GUI初始化或重建GUI时调用。使用方法如下:
@gui.variant def small(): gui.text_size = 30 # ...
指定variant名称后,可以使用 f (一个函数) 和 variant (一个字符串)调用该函数。
- gui.button_text_properties(kind=None, accent=False) link
gui.text_properties()
的一个已过时(obsolete)异名。
更多关于gui.rebuild的内容 link
gui.rebuild函数是一个非常慢的函数,更新整套GUI以适应Ren’Py当前的状态。它的处理的内容包括:
重新运行所有在gui命名空间(namespace)中定义变量的
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后得到的结果不同。
default语句、gui命名空间和gui.rebuild link
应用于 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随着游戏进度一起改变。
GUI环境设定设置 link
Ren’Py也支持GUI环境设定设置(preference)系统,包括一个函数和一系列行为(action)。
- gui.SetPreference(name, value, rebuild=True) link
这个行为(action)将名为 name 的环境设定设置项的值设置为 value 。
- rebuild
若为True,也就是默认值,调用
gui.rebuild()
会让修改生效。这项应该始终为True,除了存在多个gui.SetPreference行为的情况。那种情况除了最后一个设置为True其他都设置为False。
这是一个非常慢的行为,所以不适合在按钮处于指针悬垂(hover)状态时使用。
- gui.TogglePreference(name, a, b, rebuild=True) link
这个行为切换gui中名为 name 的环境设定设置在值 a 和 b 之间切换。当这个值等于 a 时表示该项被选中。
- rebuild
若为True,也就是默认值,调用
gui.rebuild()
会让修改生效。这项应该始终为True,除了存在多个gui.SetPreference行为的情况,那种情况除了最后一个设置为True其他都设置为False。
这是一个非常慢的行为,所以不适合在按钮处于指针悬垂(hover)状态时使用。
- gui.preference(name, default=<renpy.python.RevertableObject object at 0x7f77abf8a6d0>) link
这个函数返回gui中名为 name 的环境设定设置的值。
- default
若存在,这个值会成为gui环境设定设置 name 的默认值。第一次使用环境设定设置就需要用到默认值。
样例 link
当通过调用 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)