提问人:AleaJactaEst-data 提问时间:11/13/2023 更新时间:11/13/2023 访问量:13
Taipy 中的页面范围和变量
Page scoping and variables in Taipy
问:
我有一个由三个独立页面组成的结构,称为 main。每个页面都有自己的状态变量,还是体系结构创建了一个可以从任何页面调用的状态变量?如果它们是分开的,我该如何调用页面之间的状态?
我希望使用其他页面中的其他变量,但我收到一条错误消息,指出无法访问其他页面中的其他变量。
答:
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)
评论