Хочу поменять изображение, каждый раз выдает ошибку "'coroutine' object is not callable"
пишу бота на aiogram с flet, хочу изменять изображение, но выдает ошибку, функция для смены изображения называется 'signal'
мой код:
import flet as ft
import flet_core
import random
import os
async def main(page: ft.Page) -> None:
page.title = "Mines Bot"
page.theme_mode = ft.ThemeMode.DARK
page.bgcolor = '#002584'
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
page.fonts = {"Druk Text Cyr Medium": "fonts/Druk Text Cyr Medium.otf"}
page.theme = ft.Theme(font_family="Druk Text Cyr Medium")
async def signal(number):
if number == 3:
sing = ft.Image(
src="minus.png",
fit=ft.ImageFit.CONTAIN
)
await page.add_async(sing)
mines = ft.Text(value="1", size=50, data=1)
text = ft.Text(value="Кол-во ловушек", size=30)
txt_number = ft.TextField(value="7", width=70)
image = ft.Image(
src="fon.png",
fit=ft.ImageFit.CONTAIN
)
minus = ft.Image(
src="minus.png",
fit=ft.ImageFit.CONTAIN
)
plus = ft.Image(
src="plus.png",
fit=ft.ImageFit.CONTAIN
)
get = ft.Image(
src="get.png",
fit=ft.ImageFit.CONTAIN
)
def minus_click(e):
if int(txt_number.value) < 2:
return txt_number.value
else:
if int(txt_number.value) == 3:
txt_number.value = 1
page.update()
if int(txt_number.value) == 5:
txt_number.value = 3
page.update()
if int(txt_number.value) == 7:
txt_number.value = 5
page.update()
def plus_click(e):
if int(txt_number.value) > 7:
return txt_number.value
else:
if int(txt_number.value) == 5:
txt_number.value = 7
page.update()
if int(txt_number.value) == 3:
txt_number.value = 5
page.update()
if int(txt_number.value) == 1:
txt_number.value = 3
page.update()
await page.add_async(
image,
text,
ft.Row(
[
ft.IconButton(ft.icons.REMOVE, on_click=minus_click),
txt_number,
ft.IconButton(ft.icons.ADD, on_click=plus_click),
],
alignment=ft.MainAxisAlignment.CENTER,),
ft.Container(
content=get, on_click=signal(txt_number.value)
)
)
if __name__ == '__main__':
ft.app(target=main, view=ft.WEB_BROWSER)
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
проблема в том, что ты используешь асинхронную функцию и не вызываешь ее через await.
await page.add_async(
image,
text,
ft.Row(
[
ft.IconButton(ft.icons.REMOVE, on_click=minus_click),
txt_number,
ft.IconButton(ft.icons.ADD, on_click=plus_click),
],
alignment=ft.MainAxisAlignment.CENTER,),
ft.Container(
content=get, on_click=await signal(txt_number.value)
)
)