#2850·taipy

[BUG] Dynamic data_node_selector.datanodes 错误: 变量 '__tpgc_dn_filter101' 不可用

作者: arcanaxion创建于 2026年4月8日更新于 2026年8月5日

什么问题?

此示例允许用户选择 dn 配置 id ("x"或"y"),并更新数据 node selector. 数据节点属性可以过滤其选择器,以仅仅过滤该配置代号的数据节点。

<details}}\ 摘要> 示例代码</ 摘要>

zz
将 taipy 导入为 tp
将 taipy.gui.builder 导入为 tgb
从 Taipy 导入 Cifig, 桂
从 taipy.gui 导入通知

def平方( x: int) - > 英寸 :
返回 x**2

x cfg = config.confit data node(id="x"),默认 data=5
y cfg=config.confit data node(id="y") 互联网档案馆的存檔,存档日期2013-12-21.
square  task cfg = 配置.config task(id="square"),函数=square,输入=x cfg,输出=y cfg).
假想 cfg = config.config scfario(id="sc precario"),任务 configs=[square task cfg]) .

dn cfg id list= ["x","y"] (中文(简体) ).
选中的 dn cfg id=dn cfg id list[0]
已选择的 data node=无

以 tgb.page () 作为页面 :
带有 tgb.part( class name="容器"):
tgb.toggle(主题=真理)
tgb.text ("#动态数据 node selector.datanodes",模式="md").
带有 tgb.layout(列="1 1"):
带有 tgb.part( class name=" card mb1") :
tgb.selector () (帮助)
“{所选 dn cfg id},”
lov="{dn cfg id list}",",",","
模式="无线电",
标签=“要选择的数据节点配置 ID”,
更改=lambda 状态:通知(
状态, “S” , “已选择的 dn cfg id” 改为“ + state. sseled dn cfg id
, (中文(简体) ).
(中文(简体) ).

带有 tgb.part( class name=" card mb1") :
tgb.text ("□选择数据节点:",模式="md").
tgb.data node selector () (中文(简体) ).
“{所选数据 节点}”,
数据节点=" [s.data nodes [sselect dn cfg id] for s in tp.get scenarios (]]]",
(中文(简体) ).
tgb.data node ("{所选取的 data node}")

如果... 名字... "... main...":
配置.config core ()
tp.Orchestrator (. run () (英语).
假想 1 = tp.create scaseario(假想 cfg,名称="假想 1").
情景 1.data 节点 ["x"].write(10)
假想 2 = tp.create scaseario(假想 cfg,名称="假想2").
Gui (page=page). run (title="Dynamic data node selector.datanodes", run browser=False) (中文(简体) ).

</详情>

其能通通一脉. 如果我尝试在另一个浏览器中连接(或关闭同一浏览器并重新连接),当我点击收音箱中的一个选项时,我得到以下问题:

  1. " 数据节点 " 不更新
  2. 当选者'的回调不触发(即通知'不发生)
  3. 我得到以下警告:
/home/.venv-develop/lib/python3.12/ site-packages/taipy/gui/gui.py:2340: TaipyGuiwarning:可变" tpgc dn filter101"在" main "模块中没有.
警告( W)
/home/.venv-develop/lib/python3.12/ site-packages/taipy/gui/gui.py:805:taipyGuiwarning:解决模块" main "中的变量"时发生了一个问题.
警告( W)
  • 重现步骤
  1. 运行示例代码
  2. 在浏览器中打开应用程序
  3. 开放 . . . . . . .