马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 大以巴狼DJ 于 2024-10-7 16:00 编辑
大家好,第一次分享教程,本次教程的主要内容是:
同一界面内显示多个输入框
----------------------------------------------------------------------------------------------
本教程代码要实现的效果是:
- 同一界面中显示多个输入框
- 点击哪个输入框就激活哪个输入框
- 在对应的输入框按下键盘enter键,可将输入框中的文字传到对应的变量上
- 在输入框中有文字时,按下确认键,将输入框中的文字传到对应的变量上
- 最重要的效果是:在实现上述效果的前提下,尽量减少全局变量和if语句的使用
----------------------------------------------------------------------------------------------
下面是几个平时也许容易被大家忽视的内容:
- 1.input可以写在button中
- 2.官方 InputValue 类自带了 Toggle() 函数
----------------------------------------------------------------------------------------------
为方便学习及使用,本教程代码尽量仅保留必要部分,删去了格式相关的多余内容。
与排版格式有关的几个参数为:
frame:下面三个参数控制窗口的位置,大小,边距
pos
xysize
padding
spacing:控制元件之间的间距
yalign 0.5:当按钮和文字同一行时,使它们纵向居中对齐
----------------------------------------------------------------------------------------------
希望各位使用愉快~
界面部分代码:
[RenPy] 纯文本查看 复制代码 ## =========================================================================
## 同界面多输入框切换
## =========================================================================
## 传出屏幕的全局变量
default confirm_family_name = ''
default confirm_first_name = ''
screen input_sample():
##--------------------------
## 初始化界面变量
##--------------------------
## 初始化各输入框的默认输入值
default input_family_name = '布洛'
default input_first_name = '芬子'
## 初始化各输入框获得焦点后执行语句
default focus_input_family_name = ScreenVariableInputValue('input_family_name')
default focus_input_first_name = ScreenVariableInputValue('input_first_name')
## 在对应的输入框按下输入键后传入文本的变量
## - NOTE:enter
## - 不需要按下输入键后有对应操作的,把所有带NOTE:enter标记的部分删掉
## - 如果需要改成全局变量,自行修改NOTE:enter标记的部分
default enter_family_name = '布洛'
default enter_first_name = '芬子'
tag menu
## 编辑姓名窗口
frame:
pos (300, 100)
xysize (450, 300)
padding(10, 10)
vbox:
spacing 15
hbox:
spacing 15
text '姓名:'
## NOTE:enter
## - 按下enter键后才会显示的文本
text '[enter_family_name][enter_first_name](按下enter生效)'
hbox:
spacing 15
text '姓氏' yalign 0.5
button:
yalign 0.5
action focus_input_family_name.Toggle()
input:
value focus_input_family_name
## NOTE:enter
## - 按下enter键后执行的行为,如要删掉需连上面default的NOTE:enter变量一起删掉
action SetScreenVariable('enter_family_name', input_family_name)
hbox:
spacing 15
text '名字' yalign 0.5
button:
yalign 0.5
action focus_input_first_name.Toggle()
input:
value focus_input_first_name
## NOTE:enter
## - 按下enter键后执行的行为,如要删掉需连上面default的NOTE:enter变量一起删掉
action SetScreenVariable('enter_first_name', input_first_name)
hbox:
## 按下确定键后,将姓名变量设为“当前输入框中的值”
## - 如果需要设为enter后的值,将input_family_name,input_first_name改为enter开头的两个变量
textbutton '确定' action [SetVariable('confirm_family_name', input_family_name),
SetVariable('confirm_first_name', input_first_name),
]
## 这个窗口拿来看确认后的效果
if confirm_family_name:
frame:
pos (300, 450)
xysize (450, 100)
padding(10, 10)
text '角色姓名更改为:[confirm_family_name][confirm_first_name]'
可在 label start: 中添加如下代码查看本教程界面效果:
[RenPy] 纯文本查看 复制代码 label start:
call screen input_sample
界面效果截图
|