Хочу поменять изображение, каждый раз выдает ошибку "'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)
        )
    )
→ Ссылка