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

PyScript更新后字符串计数器代码报错,修改事件属性后仍无法运行求助

问题分析

你遇到的问题是PyScript从alpha版本升级到最新版本后,API发生了两处关键变更,导致原有代码失效:

  1. 旧的pys-on*事件属性已被废弃,需替换为py-on*格式
  2. 新版本PyScript不再全局暴露Element类,且事件绑定的语法要求更严格
修复方案

1. 修正事件绑定语法

将pys-onClick改为py-onClick,注意不要加括号,直接填写函数名即可(带括号会导致页面加载时立即执行函数,而非点击触发)。

2. 显式导入Element类

在<py-script>代码块开头添加from pyscript import Element,新版本PyScript需要显式导入该类才能使用。

3. 优化函数逻辑(可选)

可以给clear函数添加清空输出的逻辑,提升用户体验。

完整修复代码
<html>
<head>
    <title> Learn DOM for PyScript </title>
    <link rel='stylesheet' type='text/css' media='screen' href='https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css'>
    <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
    <script defer src="https://pyscript.net/latest/pyscript.js"></script>
</head>
<body>
<h1>Learn DOM Manipulation using PyScript</h1>
<h2>Simple String Counter using Python 🐍</h2>
<br>
<p>Input Text</p>
<textarea name="input_text" id="input_text" placeholder="Enter your text...."></textarea>
<br>
<button id="run" type="button" class="button is-primary" py-onClick="count">Count</button>
<button id="clear" type="button" class="button is-danger" py-onClick="clear">Clear</button>
<p>Output from 🐍</p>
<p id='output'></p>
</body>
<py-script>
from pyscript import Element

input_text = Element("input_text")
op = Element("output")

def clear(*args, **kwargs):
    input_text.clear()
    op.write("")

def count(*args, **kwargs):
    number = len(input_text.value)
    op.write(f"字符总数:{number}")
</py-script>
</html>
关键变更说明
  • 事件绑定:py-onClick="函数名"是新版本正确的绑定方式,括号写法会导致函数在页面加载时立即执行,而非点击触发
  • Element导入:alpha版本中Element是全局可用的,新版本必须显式导入,否则会触发NameError
  • 函数作用域:确保函数定义在<py-script>的全局作用域内,不要嵌套在其他函数中,保证DOM事件能正确调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:05:16