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

如何在Godot中通过脚本编辑Label控件已有的上一行内容

实现方案(按常用开发场景分类)

Web端(原生JavaScript操作DOM Label)

假设你的Label是<label>标签,内容支持换行(提前设置了white-space: pre-line或者用<br>作为换行标识),操作逻辑如下:

  • 先获取目标Label元素与现有内容:const label = document.querySelector('#目标Label的ID');
  • 按换行符拆分内容为行数组:const lines = label.innerText.split('\n');
  • 定位目标行后插入新内容示例代码:
    // 替换为你要定位的Label内已有内容
    const targetContent = "要定位的目标行文本";
    const targetLineIndex = lines.findIndex(line => line.trim() === targetContent);
    if (targetLineIndex > -1) {
      // 在上一行位置插入新内容
      lines.splice(targetLineIndex, 0, "你需要新增的内容");
      // 把处理后的内容写回Label
      label.innerText = lines.join('\n');
    }
    
  • 如果你用HTML标签实现换行,把上述代码的innerText换成innerHTML,拆分符换成<br>即可。

PyQt/PySide 场景

对应QLabel控件,操作逻辑和Web端一致:

  • 提前确认QLabel已开启wordWrap属性支持多行显示
  • 插入内容示例代码:
    # 替换为你自己的Label实例
    target_label = self.ui.label
    current_text = target_label.text()
    lines = current_text.split('\n')
    target_content = "要定位的目标行文本"
    try:
        target_idx = lines.index(target_content)
        # 在上一行插入新内容
        lines.insert(target_idx, "需要新增的内容")
        target_label.setText('\n'.join(lines))
    except ValueError:
        # 未找到目标行的自定义处理逻辑
        pass
    

WinForm (.NET C#) 场景

对应System.Windows.Forms.Label控件,提前确认Label已开启多行显示、关闭AutoSize属性:

string targetContent = "要定位的目标行文本";
var lines = targetLabel.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
int targetIndex = Array.IndexOf(lines, targetContent);
if (targetIndex >= 0) {
    var newLines = lines.Take(targetIndex)
        .Concat(new[] { "需要新增的内容" })
        .Concat(lines.Skip(targetIndex))
        .ToArray();
    targetLabel.Text = string.Join(Environment.NewLine, newLines);
}

通用注意事项:如果匹配目标行不需要完全一致,只需要包含指定关键词,可以把全等匹配的逻辑改成包含匹配即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:45:00