Taipy 中的页面范围和变量

Page scoping and variables in Taipy

提问人:AleaJactaEst-data 提问时间:11/13/2023 更新时间:11/13/2023 访问量:13

问:

我有一个由三个独立页面组成的结构,称为 main。每个页面都有自己的状态变量,还是体系结构创建了一个可以从任何页面调用的状态变量?如果它们是分开的,我该如何调用页面之间的状态?

Code organisation

我希望使用其他页面中的其他变量,但我收到一条错误消息,指出无法访问其他页面中的其他变量。

Python 用户界面 范围 绑定 TAIPY

评论


答:

1赞 Florian Jacta 11/13/2023 #1

你用过 Taipy 的 Markdown 对象吗?如果你不使用它,你应该把所有的变量放在你的主脚本中来访问它。

from ... import xxx, yyy

如果使用 Markdown 对象,则变量和回调的范围限定为页面。这意味着您不能在另一个页面上访问范围限定在一个页面上的变量。如果它们是公共变量,则应将它们放在主脚本中。但是,您始终可以通过以下方式访问它们:

state['your-page'].variable_name

下面是一些关于变量绑定的文档

例如,您可以从 Covid Dashboard 演示中查看此代码。我只导入 Markdown 对象和多个页面上存在的其他必要变量。

from taipy.gui import Gui
import taipy as tp

from pages.country.country import country_md
from pages.world.world import world_md
from pages.map.map import map_md
from pages.predictions.predictions import predictions_md, selected_scenario
from pages.root import root, selected_country, selector_country

from config.config import Config

pages = {
    '/':root,
    "Country":country_md,
    "World":world_md,
    "Map":map_md,
    "Predictions":predictions_md
}


gui_multi_pages = Gui(pages=pages)

if __name__ == '__main__':
    tp.Core().run()
    
    gui_multi_pages.run(title="Covid Dashboard")

在这里(最后一行)我正在使用回调函数来更新另一个页面(国家/地区页面)。on_change_params

def on_change_params(state):
    if state.selected_date.year < 2020 or state.selected_date.year > 2021:
        notify(state, "error", "Invalid date! Must be between 2020 and 2021")
        state.selected_date = dt.datetime(2020,10,1)
        return
    
    state.selected_scenario.date.write(state.selected_date.replace(tzinfo=None))
    state.selected_scenario.country.write(state.selected_country)
    notify(state, "success", "Scenario parameters changed!")

    state['Country'].on_change_country(state)