You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Renpy的Show()函数中传参并在新屏幕显示字典内容?

Ren'Py 常见问题解决:Show() 传参与屏幕展示字典内容

问题1:正确使用 Ren'Py 的 Show() 函数

你的代码里 Show("showBio([i], [heroes])") 的写法是错误的——Ren'Py 的 Show 动作不需要把参数用字符串插值包裹,而是直接在屏幕名后传递关键字参数,对应目标屏幕的参数名即可。

错误原因:你把变量转成了字符串传递,但 Show 需要的是实际的 Python 变量,而非字符串形式的变量名。

正确写法示例:

textbutton "[i]" action Show("showBio", id=i, char_dict=heroes)

问题2:在屏幕中展示字典内容

要在屏幕里正确展示字典内容,需要注意三个关键点:

1. 确保字典键唯一

原代码里的字典存在键重复问题:{ Someone : 1, Someone: 2},字典中重复的键会被后面的覆盖,最终只会保留最后一个键值对。先修正字典定义:

define python:
    # 使用唯一的字符串/变量作为字典键
    heroes = { "Hero1": 1, "Hero2": 2 }

2. 避免参数名与Python内置关键字冲突

原屏幕用 dict 作为参数名,而 dict 是 Python 内置的类型关键字,会引发潜在冲突,建议改成更具语义的名称,比如 char_dict:

screen showBio(id, char_dict):
    frame:
        xsize 300
        ysize 300
        vbox:
            # 直接通过键从字典中取值并展示
            text f"角色: {id}\n对应数值: {char_dict[id]}"
            # 或者用Ren'Py原生的插值语法:
            # text "角色: [id]\n对应数值: [char_dict[id]]"

3. 正确传递字典到目标屏幕

结合上面的修正,最终的 characters 屏幕代码如下:

screen characters():
    tag menu
    use game_menu(_("Heroes"), scroll="viewport"):
        for i in heroes:
            textbutton "[i]" action Show("showBio", id=i, char_dict=heroes)

内容的提问来源于stack exchange,提问作者Nurik Zhumashev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:17:04