当前位置: 首页 > 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.hskmm.com/?act=detail&tid=32661

相关文章:

  • 【填坑】电脑用户名有中文字符,如何与github建立SSH连接
  • 数据采集第一次作业
  • 向量空间与子空间
  • 西工大开源 Easy Turn:全双工轮次转换检测模型;百度 MuseSteamer 引入开放世界生成能力丨日报
  • 10/16
  • 2025.10.16总结
  • 日常生活中的AI应用记录-2
  • containerd二进制安装
  • 维修笔记 | 一例滤波电容老化引发开关电源异常现象
  • (一)GPU与CUDA概述
  • 实验1 面向对象程序设计C++
  • 练习篇:第一次markdown成果展示
  • 微软已停止对 Windows 10 系统的支持
  • DirectX RayTracing (3) 程序图元及复杂光照
  • NiN模型
  • 2025秋_13
  • 2023 ICPC Hefei
  • 斑马日记2025.10.16
  • 可能是 ICPC2025 西安站游记
  • Active Directory用户账户安全配置与漏洞防范指南
  • 实验一 现代C++编程初体验
  • day013
  • Git SSH 推送完整流程总结
  • 运筹学奖学金项目促进科研多元化发展
  • 非托管内存怎么计算?
  • ubuntu配置镜像源和配置containerd安装源
  • dotnet集合类型性能优化的两个小儿科的知识点
  • ABC420 AtCoder Beginner Contest 420 游记(VP)
  • 【题解】CF2086C Disappearing Permutation
  • Windows 事件ID + 登录类型 + 服务对应表大全