用WxPython做界面时, 如果数据操作时间比较长,会使 WxPython 界面处于假死状态,用户体验非常不好。
WxPython是利用pubsub来完成消息的传送。
下面提供一个 WxPython界面利用pubsub 实现2个线程的控制的例子,实际使用, 只要修改
WorkThread1、WorkThread2 里的 run 内容 及 MainFrame 里的 updateDisplay 内容即可。
在此基础上,可以实现多线程。
Python 3.7.3
wxPython 4.0.6
Pypubsub 4.0.3
在此之前有个单线程及进度条的例子,简单需求可以参考这个
下面提供本文的代码
# encoding: utf-8
"""
@author: 陈年椰子
@contact: hndm@qq.com
@version: 1.0
@project:test
@file: wx_thread.py
@time: 2022-3-24 15:34
说明
"""
import wx
from pubsub import pub
from time import sleep
import time
import threading
import sys
from random import random
# 线程调用耗时长代码
class WorkThread1(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):
while True:
if self.breakflag:
pub.sendMessage(