代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Python
】
多线程的界面操作
作者:
DDT
/ 发布于
2013/1/8
/
974
# coding=UTF-8 import wx import threading import random class WorkerTread(threading.Thread): def __init__(self,threadNum,window): threading.Thread.__init__(self) self.threadNum = threadNum self.window = window self.timeToQuit = threading.Event() self.timeToQuit.clear() self.messageCount = random.randint(10,20) self.messageDelay = 0.1 + 2.0*random.random() def stop(self): self.timeToQuit.set() def run(self): msg = u"线程 %d 执行 %d次 延迟 %1.4f\n" %(self.threadNum,self.messageCount,self.messageDelay) wx.CallAfter(self.window.LogMessage,msg) for i in range(1,self.messageCount+1): self.timeToQuit.wait(self.messageDelay) if self.timeToQuit.isSet(): break msg = u"信息 %d 来自于线程 %d\n" % (i,self.threadNum) wx.CallAfter(self.window.LogMessage,msg) else: wx.CallAfter(self.window.ThreadFinished,self) class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,title=u"多线程演示界面") self.threads = [] self.count = 0 Panel = wx.Panel(self) startBtn = wx.Button(Panel,-1,u"开启一个线程") stopBtn = wx.Button(Panel,-1,u"停止所有线程") self.tc = wx.StaticText(Panel,-1,u"工作的线程:00") self.log = wx.TextCtrl(Panel,-1,"",style = wx.TE_RICH|wx.TE_MULTILINE) inner = wx.BoxSizer(wx.HORIZONTAL) inner.Add(startBtn,0,wx.RIGHT,15) inner.Add(stopBtn,0,wx.RIGHT,15) inner.Add(self.tc,0,wx.ALIGN_CENTER_VERTICAL) main = wx.BoxSizer(wx.VERTICAL) main.Add(inner,0,wx.ALL,5) main.Add(self.log,1,wx.EXPAND|wx.ALL,5) Panel.SetSizer(main) self.Bind(wx.EVT_BUTTON,self.OnStartButton,startBtn) self.Bind(wx.EVT_BUTTON,self.OnStopButton,stopBtn) self.Bind(wx.EVT_CLOSE,self.OnCloseWindow) self.UpdateCount() def OnStartButton(self,evt): self.count +=1 thread = WorkerTread(self.count,self) self.threads.append(thread) self.UpdateCount() thread.start() def OnStopButton(self,evt): self.StopTreads() self.UpdateCount() def OnCloseWindow(self,evt): self.StopTreads() self.Destroy() def StopTreads(self): while self.threads: thread = self.threads[0] thread.stop() self.threads.remove(thread) def UpdateCount(self): self.tc.SetLabel(u"工作线程: %d" % len(self.threads)) def LogMessage(self,msg): self.log.AppendText(msg) def ThreadFinished(self,thread): self.threads.remove(thread) self.UpdateCount() if __name__=='__main__': app = wx.PySimpleApp() frm = MyFrame() frm.Show() app.MainLoop()
试试其它关键字
多线程
同语言下
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
DDT
贡献的其它代码
(
160
)
.
Oracle统计表的数据行和数据块信息
.
html标签闭合检测与修复
.
Powershell日期计算
.
Powershell的Base64编解码
.
Powershell并行循环
.
Powershell目录中搜索文本
.
Powershell枚举远程机器上的本地权限组
.
VBScript解析csv文件
.
快速排序之Powershell
.
批处理输出格式化时间字符串
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3