尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

sg_后台线程运行函数示例

sg_后台线程运行函数示例
📅 发布时间:2026/6/20 22:54:17
import PySimpleGUI as sg
import math
import time
from threading import Eventdef calculate_sqrt_sum(window, stop_event):"""后台计算函数:计算1亿以内自然数的平方根之和"""total = 100_000_000batch_size = 1_000_000sum_result = 0.0start_time = time.time()try:for i in range(1, total + 1):sum_result += math.sqrt(i)# 进度更新if i % batch_size == 0 or i == total:progress = i / total * 100elapsed = time.time() - start_time# 发送进度更新事件(使用元组传递多个值)window.write_event_value('-PROGRESS-', (f'已处理 {i:,} 个数...',progress,sum_result,elapsed))# 检查停止信号if stop_event.is_set():window.write_event_value('-CANCELED-', None)return# 计算完成elapsed = time.time() - start_timewindow.write_event_value('-DONE-', (sum_result, elapsed))except Exception as e:window.write_event_value('-ERROR-', str(e))def main():stop_event = Event()layout = [[sg.Text('1亿以内自然数平方根之和计算器')],[sg.Text('计算进度:'), sg.ProgressBar(100, orientation='h', size=(30, 20), key='-PROGRESS-BAR-')],[sg.Multiline('', size=(50, 8), key='-OUTPUT-', autoscroll=True)],[sg.Text('结果:'), sg.Input('', key='-RESULT-', disabled=True, size=(30, 1))],[sg.Text('用时:'), sg.Input('', key='-TIME-', disabled=True, size=(15, 1)), sg.Text('秒')],[sg.Button('开始计算'), sg.Button('停止'), sg.Button('退出')]]window = sg.Window('后台计算示例', layout, finalize=True)window['-PROGRESS-BAR-'].update(0)while True:event, values = window.read()if event in (sg.WIN_CLOSED, '退出'):stop_event.set()breakelif event == '开始计算':window['-PROGRESS-BAR-'].update(0)window['-RESULT-'].update('')window['-TIME-'].update('')window['-OUTPUT-'].update('')stop_event.clear()window['开始计算'].update(disabled=True)window['停止'].update(disabled=False)# 启动后台线程window.start_thread(lambda: calculate_sqrt_sum(window, stop_event),'-THREAD-')elif event == '停止':stop_event.set()window['停止'].update(disabled=True)# 处理来自线程的事件elif event == '-PROGRESS-':message, progress, result, elapsed = values[event]window['-OUTPUT-'].print(message)window['-PROGRESS-BAR-'].update(progress)elif event == '-DONE-':result, elapsed = values[event]window['-RESULT-'].update(f'{result:.4f}')window['-TIME-'].update(f'{elapsed:.2f}')window['-OUTPUT-'].print('计算完成!')window['开始计算'].update(disabled=False)window['停止'].update(disabled=True)elif event == '-CANCELED-':window['-OUTPUT-'].print('计算已取消')window['开始计算'].update(disabled=False)window['停止'].update(disabled=True)elif event == '-ERROR-':sg.popup_error(f'计算出错: {values[event]}')window['开始计算'].update(disabled=False)window['停止'].update(disabled=True)window.close()if __name__ == '__main__':main()

相关新闻

  • 2025 年钢球厂家最新推荐榜:技术实力与市场口碑深度解析,筛选优质服务商420 不锈钢球 / 304 不锈钢球 / 316L 不锈钢球制造商推荐
  • 2025年正规的学校宿舍铁床厂家推荐及采购指南
  • 2025年短视频运营公司推荐:行业五大短视频公司深度解析

最新新闻

  • 2026年化工助剂回收企业推荐:邯郸市益德贸易专业回收报废/过期/废弃化工助剂 - 品牌推荐官
  • Ollama本地运行Phi-3模型:轻量级AI推理实战指南
  • 江苏徐马环保科技推荐:粉煤灰生产线/球磨机等设备专业供应与技术服务 - 品牌推荐官
  • 吉林海普科技:纳滤膜及膜分离设备专业供应商,多领域应用实力推荐 - 品牌推荐官
  • i.MX50 EIM与DRAM时序配置实战:从原理到调试的嵌入式硬件设计指南
  • i.MX 6处理器电气特性与引脚配置实战解析:从时序到PCB设计

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号