Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Flet python вывод на экран

miakq kkxhe Ученик (98), закрыт 9 часов назад
Подскажите пожалуйста что не так с кодом, я хочу сделать так что бы при нажатии на кнопку Назад у меня текст вывода на экран отображалось другое значение, я знаю что можно сделать ft.Text.value = ... , но я хочу сделать именно через переменную

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)
Лучший ответ
S.H.I. Оракул (68572) 21 час назад
Ваш код почти правильный, но есть одна проблема: когда вы изменяете значение переменной 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
Остальные ответы
Похожие вопросы