Пишу игру-кликер с помощью flet. При написании функции score_up возникла ошибка:
score_count.left = event.local_x
^^^^^^^^^^^^^
AttributeError: ‘ControlEvent’ object has no attribute ‘local_x’
import asyncio
import flet as ft
async def main(page: ft.Page):
page.title = "Привет"
page.theme_mode = ft.ThemeMode.DARK
page.bgcolor = "141221"
page.vertical_alignment = ft.MainAxisAlignment.CENTER
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
page.fonts = {"RobotoSlab": "https://github.com/google/fonts/raw/main/apache/robotoslab/RobotoSlab%5Bwght%5D.ttf"}
page.theme = ft.Theme(font_family = "RobotoSlab")
async def score_up(event: ft.ContainerTapEvent):
score.data += 1
score.value = str(score.data)
image.scale = 0.95
score_count.opacity = 50
score_count.value = "=1"
score_count.right = 0
score_count.left = event.local_x
score_count.top = event.local_y
score_count.bottom = 0
progress_bar.value += (1 / 100)
await page.update_async()
await asyncio.sleep(0.1)
image.scale = 1
score_count.opacity = 0
await page.update_async()
score = ft.Text(value="0", size=100, data=0)
score_count = ft.Text(size=50, animate_opacity=ft.Animation(duration=600, curve=ft.AnimationCurve.BOUNCE_IN))
image = ft.Image(src="cat.png", fit=ft.ImageFit.CONTAIN, animate_scale=ft.Animation(duration=600, curve=ft.AnimationCurve.EASE))
progress_bar = ft.ProgressBar(value=0, width=page.width - 100, bar_height=20, color="#ff8b1f", bgcolor="#bf6524")
await page.add_async(
score,
ft.Container(content=ft.Stack(controls=[image, score_count]), on_click=score_up, margin=ft.Margin(0, 0, 0, 30)),
ft.Container(content=progress_bar, border_radius=ft.BorderRadius(10, 10, 10, 10))
)
if __name__ == "__main__":
ft.app(target = main, view = ft.WEB_BROWSER)
Искал решение в документации: нашёл про событие on_click, но должного результата это не дало
New contributor
Mantih is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.