Ваш код почти правильный, но есть одна проблема: когда вы изменяете значение переменной t, текст на экране не обновляется автоматически. Это происходит потому, что ft.Text не связан напрямую с переменной t. Вам нужно обновить текст вручную, используя метод update у объекта ft.Text.
Вот исправленный код:
import flet as ft
def main(page):
page.title = 'test'
page.vertical_alignment = ft.MainAxisAlignment.CENTER
page.theme_mode = 'light'
t = 'veditext'
text_widget = ft.Text(t) # Создаем виджет текста и сохраняем его в переменной
def test(e):
nonlocal t # Используем nonlocal, так как t изменяется внутри функции
t = 'lox'
text_widget.value = t # Обновляем значение текста
page.update()
page.add(
ft.Row(
[
ft.IconButton(ft.icons.HOME),
ft.IconButton(ft.icons.BACK_HAND, on_click=test)
],
alignment=ft.MainAxisAlignment.CENTER
),
ft.Row(
[
text_widget, # Используем сохраненный виджет текста
ft.TextField(width=100, text_align=ft.TextAlign.CENTER)
],
alignment=ft.MainAxisAlignment.CENTER
)
)
ft.app(target=main, view=ft.AppView.WEB_BROWSER)
miakq kkxheУченик (98)
20 часов назад
А нельзя чуть по другому сделать, что бы полностью значение текст не менять, просто я хочу менять значение переменной и везде где указана переменная t, все тексты менялись также, не вручную все а просто поменяв значение переменной t
import flet as ft
def main(page):
page.title = 'test'
page.vertical_alignment = ft.MainAxisAlignment.CENTER
page.theme_mode = 'light'
t = 'veditext'
def test(e):
global t
t = 'lox'
page.update()
page.add(
ft.Row(
[
ft.IconButton(ft.icons.HOME),
ft.IconButton(ft.icons.BACK_HAND, on_click = test)
],
alignment = ft.MainAxisAlignment.CENTER
),
ft.Row(
[
ft.Text(t),
ft.TextField(width = 100, text_align = ft.TextAlign.CENTER)
],
alignment = ft.MainAxisAlignment.CENTER
)
)
ft.app(target = main, view = ft.AppView.WEB_BROWSER)