加载中…
  
博文
标签:

技术

杂谈

分类: 技术文章
 有时候需要将字符串转换成16进制或者将16进制的转换成字符串格式。下面提供两个函数:

#convert string to hex
def toHex(s):
    lst = []
    for ch in s:
        hv = hex(ord(ch)).replace('0x', '')
        if len(hv) == 1:
            hv = '0'+hv
        lst.append(hv)
   
    return reduce(lambda x,y:x+y, lst)

#convert hex repr to string
def toStr(s):
    return s and chr(atoi(s[:2], base=16)) + toStr(s[2:]) or ''

标签:

技术

杂谈

分类: 技术文章

18.6 创建一个多线程的wxPython应用程序

在大多数的GUI应用程序中,在应用程序的后台中长期执行一个处理过程而不干涉用户与应用程序的其它部分的交互是有好处的。允许后台处理的机制通常是产生一个线程并在该线程中长期执行一个处理过程。对于wxPython的多线程,在这一节我们有两点需要特别说明。

最重要的一点是,GUI的操作必须发生在主线程或应用程序的主循环所处的地方中。在一个单独的线程中执行GUI操作对于无法预知的程序崩溃和调试来说是一个好的办法。基于技术方面的原因,如许多Unix的GUI库不是线程安全性的,以及在微软Windows下UI对象的创建问题,wxPython没有设计它自己的发生在多线程中的事件,所以我们建议你也不要尝试。

上面的禁令包括与屏幕交互的任何项目,尤其包括wx.Bitmap对象。

对于wxPython应用程序,关于所有UI的更新,后台线程只负责发送消息给UI线程,而不关心GUI的更新。幸运的是,wxPython没有强制限定你能够有的后台线程的数量。

在这一节,我们将关注几个wxPython中实现多线程的方法。最常用的技术是使用wx.CallAfter()函数,一会我们会讨论它。然后,

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有