You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从自定义Stopwatch类中获取实例变量seconds的值?

解决Flet秒表类中提取seconds变量的问题

你当前的问题在于直接通过类Stopwatch访问seconds,但seconds是实例属性(每个Stopwatch对象独有的属性),不是类属性,必须先创建类的实例才能访问。

正确的实现方式

1. 创建实例后访问seconds

首先要实例化Stopwatch类,再通过实例对象获取seconds的值:

import asyncio
import flet as ft

class Stopwatch(ft.Text):
    def __init__(self, seconds):
        super().__init__()
        self.seconds = seconds

    def did_mount(self):
        self.running = True
        self.page.run_task(self.update_timer)

    def will_unmount(self):
        self.running = False

    async def update_timer(self):
        while self.seconds >= 0 and self.running:
            mins, secs = divmod(self.seconds, 60)
            self.value = "{:02d}:{:02d}".format(mins, secs)
            self.size = 25
            self.weight=ft.FontWeight.W_600
            self.update()
            await asyncio.sleep(1)
            self.seconds += 1

async def main(page: ft.Page):
    # 创建Stopwatch实例,初始秒数设为0
    stopwatch = Stopwatch(0)
    await page.add(stopwatch)
    
    # 示例:添加按钮,点击时打印当前seconds值
    def get_seconds(e):
        print(f"当前秒数:{stopwatch.seconds}")
    
    page.add(ft.ElevatedButton("获取当前秒数", on_click=get_seconds))

if __name__ == "__main__":
    ft.app(target=main)

2. 关键说明

  • Stopwatch(0)创建了一个初始秒数为0的秒表实例,之后通过stopwatch.seconds就能访问该实例的秒数变量。
  • 在Flet中,组件需要挂载到页面才能运行did_mount方法启动计时,所以要把实例添加到page中。
  • 如果需要在计时过程中获取秒数,可以通过交互控件(比如按钮)触发访问操作,或者在update_timer方法中直接打印/处理self.seconds。

内容的提问来源于stack exchange,提问作者Pro Bany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:27:04