用WxPython做界面时, 如果数据操作时间比较长,会使 WxPython 界面处于假死状态,用户体验非常不好。
WxPython是利用pubsub来完成消息的传送。
下面提供一个 WxPython界面利用pubsub 展示进程工作的进度条的例子,实际使用, 只要修改
WorkThread 里的 run 内容 及 MainFrame 里的 updateDisplay 内容即可。
环境需求
Python 3.7.3
wxPython 4.0.6
Pypubsub 4.0.3
安装 pubsub
pip install pypubsub
# encoding: utf-8
"""
@author: 陈年椰子
@contact: hndm@qq.com
@version: 1.0
@file: wxpub.py
@time: 2020/02/25
说明 WxPython 界面利用pubsub与线程通讯使用进度条的例子
import wxpub as wp
wp.test()
"""
import wx
from pubsub import pub
from time import sleep
import threading
import sys
# 线程调用耗时长代码
class WorkThread(threading.Thread):
def __init__(self):
"""Init Worker Thread Class."""
threading.Thread.__init__(self)
self.breakflag = False
self.start()
def stop(self):
self.breakflag = True
# 耗时长的代码
def workproc(self):
sum_x = 0
for i in range(1, 101):
if self.breakflag:
pub.sendMessage("update", mstatus='中断')
sleep(2)
break
sum_x = sum_x + i