如何在Renpy中实现支持粘贴24位随机哈希码的输入功能?
Ren'Py 24位特殊码粘贴输入功能实现方案
该功能可直接通过Ren'Py内置接口实现,无需引入第三方依赖,全平台(除iOS特殊权限限制外)通用。
实现原理
Ren'Py 内置了renpy.get_clipboard()方法可以直接读取系统剪贴板内容,只需要自定义输入框页面,绑定粘贴触发逻辑,自动校验并填充剪贴板中的24位哈希值即可。
完整实现代码
1. 初始化粘贴逻辑
把以下代码放到脚本任意init块中即可:
init python: import re def paste_hash_code(input_var: str) -> None: # 读取并清洗剪贴板内容 clipboard = renpy.get_clipboard().strip() # 可选:增加正则匹配规则,过滤非哈希字符,这里假设你的哈希是小写字母+数字组合 valid_hash = re.match(r'^[a-z0-9]{24}$', clipboard) if valid_hash: setattr(store, input_var, clipboard) renpy.restart_interaction() else: renpy.notify("剪贴板中无有效24位特殊码")
2. 自定义带粘贴功能的输入框
新增输入框screen,支持按钮粘贴和Ctrl+V快捷键粘贴:
screen special_code_input(): # 输入框绑定的变量,默认最大输入长度24位 default input_val = "" frame: xalign 0.5 yalign 0.5 padding (40, 30) vbox: spacing 20 text "请输入24位特殊码:" size 22 input: value VariableInputValue("input_val", length=24) width 450 size 20 hbox: spacing 15 xalign 0.5 textbutton "粘贴" size 20 action Function(paste_hash_code, "input_val") textbutton "确认" size 20 action If(len(input_val.strip()) == 24, Return(input_val.strip()), Notify("请输入完整24位特殊码")) textbutton "取消" size 20 action Hide("special_code_input") # 绑定Ctrl+V快捷键触发粘贴 key "ctrl+v" action Function(paste_hash_code, "input_val")
3. 调用输入框的方法
在需要唤起特殊码输入的剧情节点直接调用即可:
label start: "请输入你的专属特殊码领取奖励" # 唤起输入框 call screen special_code_input # 获取输入/粘贴的结果 $ user_hash = _return f"你提交的特殊码为:{user_hash}" # 后续自行添加特殊码校验逻辑即可
可选优化项
- 如果你的哈希值支持大写,可以修改正则匹配规则为
r'^[a-zA-Z0-9]{24}$' - 移动端可以隐藏快捷键绑定,只保留粘贴按钮即可
- 可以增加输入完成后自动去空格的逻辑,避免用户手动输入时误加空格
内容的提问来源于stack exchange,提问作者yoza yozic
相关产品推荐
相关产品推荐

