当前位置: 首页 > news >正文

PySimpleGUI 中有没有类似VB的timer组件

在PySimpleGUI中,没有直接等同于VB的Timer组件,但可通过以下两种方式实现类似功能,且PySimpleGUI 5.0+版本提供了更优化的定时器管理方案:

一、通过window.read(timeout)模拟定时器

  • 原理:利用window.read(timeout)方法的超时参数,在每次事件循环中短暂暂停,模拟定时器行为。

  • 特点

    • 简单易用:适合对时间精度要求不高的场景。
    • 局限性:超时参数精度有限,且事件循环可能被其他用户操作打断。
  • 示例代码

import PySimpleGUI as sg
import timelayout = [[sg.Text("0:00:00", size=(10, 1), font=("Helvetica", 48), key="-TIMER-")],[sg.Button("Start", key="-START-"), sg.Button("Pause", key="-PAUSE-"), sg.Button("Reset", key="-RESET-")]]window = sg.Window("Timer", layout)
start_time = None
paused_time = 0
running = Falsewhile True:event, values = window.read(timeout=100)  # 100ms超时if event == sg.WINDOW_CLOSED:break# 其余事件处理逻辑...

二、使用PySimpleGUI 5.0+的Timer API

  • 原理:PySimpleGUI 5.0版本引入了timer_start()timer_stop()等API,提供更精确的定时器控制。

  • 特点

    • 高精度:通过底层库实现更准确的时间管理。
    • 事件驱动:定时器到期时触发特定事件,便于集成到事件循环中。
  • 示例代码

import PySimpleGUI as sgdef timer_callback():print("Timer event triggered!")# 更新UI或执行其他操作layout = [[sg.Button("Start Timer", key="-START-TIMER-")]]
window = sg.Window("Timer API Example", layout)timer_id = Nonewhile True:event, values = window.read()if event == sg.WINDOW_CLOSED:breakelif event == "-START-TIMER-":if timer_id is None:timer_id = window.timer_start(1000, timer_callback)  # 1秒触发一次# 其余逻辑...window.close()

三、两种方案对比与推荐

方案 精度 适用场景 代码复杂度
window.read(timeout) 简单计时、低精度需求
Timer API 精确计时、事件驱动需求 中等
  • 推荐选择

    • 若需快速实现简单计时功能,且对精度要求不高,优先使用window.read(timeout)
    • 若需高精度定时控制或复杂事件驱动逻辑,建议升级至PySimpleGUI 5.0+并使用Timer API
http://www.rkmt.cn/news/22616.html

相关文章:

  • 向量空间与子空间
  • 西工大开源 Easy Turn:全双工轮次转换检测模型;百度 MuseSteamer 引入开放世界生成能力丨日报
  • 2025.10.16总结
  • containerd二进制安装
  • 维修笔记 | 一例滤波电容老化引发开关电源异常现象
  • (一)GPU与CUDA概述
  • 微软已停止对 Windows 10 系统的支持
  • 2023 ICPC Hefei
  • postgresql第一篇:postgresql收到一条sql语句后做了什么
  • Windows 事件ID + 登录类型 + 服务对应表大全
  • 10.16日学习笔记
  • 技术人不用当“兼职运营”:2025微信编辑器实用指南,让产品更新日志/API教程产出效率提升3倍
  • 10.16 —— 2021ccpc桂林D,B
  • 日志|二叉树|404左叶子之和|112路径总和|129求根节点到叶子节点数字之和|
  • 云服务器上部署 EasyTier中转服务器
  • 问世界
  • 实用指南:Kotlin协程 vs Java虚拟线程:从Continuation挂起到ForkJoin调度,解锁现代并发新范式
  • 黄景行电脑软件
  • 开源许可协议 gpl vs mit?
  • idea代码阿里格式化
  • windows 链接共享打印机出现错误0x00000709?打印机0x0000011b错误?0x0000bcd、0x00000709、0x00000011b
  • 解码Linux文件IO目录检索与文件属性
  • C# - 串口助手
  • 077_尚硅谷_单分支基本使用
  • C0214 拔树游戏 题解
  • 使用SpringBoot+MyBatisPlus实现增删改查
  • 详细介绍:Java-Spring入门指南(十九)thymeleaf基本概念
  • 详细介绍:VR 太阳光参数与快速渲染
  • 位运算中没用的小技巧
  • 超越基础:SightAI 智能路由与多模型选择实战 - sight