更新版下载地址: http://www.cnblogs.com/dabaopku/archive/2010/08/27/1810040.html

分别保存成两个文件,dict.py是主程序

调用有道的翻译结果

需要 PtQt4支持

窗口为popup,失去焦点后自动结束程序

dict.py

#! /usr/bin/pythonimport sys
from PyQt4 import QtGui , QtCore
import lookup
import commandsclass WinDict(QtGui.QWidget):def __init__(self):QtGui.QWidget.__init__(self)cursor=QtGui.QCursor.pos()self.setGeometry(cursor.x()-150,20,500,500)self.setWindowFlags(QtCore.Qt.Popup)grid=QtGui.QGridLayout()grid.setSpacing(10)        grid.addWidget(QtGui.QLabel("Word"), 1, 0)self.txtWord = QtGui.QLineEdit()self.txtRes = QtGui.QTextEdit()self.txtRes.setReadOnly(True)grid.addWidget(self.txtWord, 1, 1)grid.addWidget(self.txtRes, 3, 0, 5, 2)self.setLayout(grid)self.txtWord.returnPressed.connect(self.Translate)self.txtWord.setFocus()def Translate(self):res=lookup.look_up(self.txtWord.text())reload(sys)sys.setdefaultencoding('utf-8')res=unicode(res)self.txtRes.setText(res)def hideEvent(self,event):print "Goodbye"quit()app = QtGui.QApplication(sys.argv)
dict=WinDict()
reload(sys)
sys.setdefaultencoding('utf-8')
dict.show()
sys.exit(app.exec_())

lookup.py

#! /usr/bin/python
# coding=gbk
import re
import urllib
import urllib2
import sysdef look_up(word):xml = crawl_xml(str(word))res = decorate(xml)return resdef get_elements_by_path(xml, elem):if type(xml) == type(''):xml = [xml]if type(elem) == type(''):elem = elem.split('/')if (len(xml) == 0):return []elif (len(elem) == 0):return xmlelif (len(elem) == 1):result = []for item in xml:result += get_elements(item, elem[0])return resultelse:subitems = []for item in xml:subitems += get_elements(item, elem[0])return get_elements_by_path(subitems, elem[1:])textre = re.compile("\!\[CDATA\[(.*?)\]\]", re.DOTALL)def get_text(xml):match = re.search(textre, xml)if not match:return xmlreturn match.group(1)def get_elements(xml, elem):p = re.compile("<" + elem + ">" + "(.*?)</" + elem + ">", re.DOTALL)it = p.finditer(xml)result = []for m in it:result.append(m.group(1))return resultdef crawl_xml(queryword):return urllib2.urlopen("http://dict.yodao.com/search?keyfrom=dict.python&q="+ urllib.quote_plus(queryword) + "&xmlDetail=true&doctype=xml").read();def decorate(xml):#print xmloriginal_query = get_elements(xml, "original-query")queryword = get_text(original_query[0])res = u"<div style=\"font-family:微软雅黑\"><center><p><span style=\"font-size:25px; color:#f00;\">" + queryword + "</span>" #prounounceprou=get_elements(xml, "phonetic-symbol")if len(prou)>0:prou=get_text(prou[0])res+="<span style=\"font-size:15px>\">   ["+prou+"]</span>"res += "</p></center>"    #word formwordforms=get_elements(xml, "word-form")if len(wordforms)>0:res+="<p>"for wordform in wordforms:formname=get_elements(wordform, "name")res+=get_text(formname[0])+": "formname=get_elements(wordform, "value")res+=get_text(formname[0])+"    "res+="</p>"    #ec trans  custom_translations = get_elements(xml, "custom-translation")if len(custom_translations)>0:ectrans=custom_translations[0]src=get_elements_by_path(ectrans, "source/name")if len(src)>0:res+="<p style=\"color:#2555B4\">"+get_text(src[0])+"</p>"        trans=get_elements_by_path(ectrans, "translation/content")res+="<ul>"for tran in trans:res+="<li>"+get_text(tran)+"</li>"res+="</ul>"# phraseyodao_translations = get_elements(xml, "yodao-web-dict")if len(yodao_translations)>0:res+=u"<p style=\"color:#2555B4\">词组</p><ul>"        for trans in yodao_translations:webtrans = get_elements(trans, "web-translation")for web in webtrans[0:50]:keys = get_elements(web, "key")values = get_elements_by_path(web, "trans/value")summaries = get_elements_by_path(web, "trans/summary")key = keys[0].strip()value = values[0].strip()res+= "<li>"+get_text(key) + ":\t" + get_text(value)+"</li>";res+="</ul>"#sentencesents=get_elements(xml, "sentence-pair")if len(sents)>0:res+=u"<p style=\"color:#2555B4\">句子</p><ul>" for sent in sents:res+="<li>"+get_text(get_elements(sent, "sentence")[0])res+="<br/>"+get_text(get_elements(sent, "sentence-translation")[0])+"</li>"res+="</ul>"#cc transcustom_translations = get_elements(xml, "custom-translation")if len(custom_translations)>1:ectrans=custom_translations[1]src=get_elements_by_path(ectrans, "source/name")if len(src)>0:res+="<p style=\"color:#2555B4\">"+get_text(src[0])+"</p>"        trans=get_elements_by_path(ectrans, "translation/content")res+="<ul>"for tran in trans:res+="<li>"+get_text(tran)+"</li>"res+="</ul>"res+="</div>"return res
我,大宝库博主,本作品的版權持有者,特此声明使用下列协议发表本作品:1.任何人都可以在自由軟體基金會所公開發行之GNU自由文件協議许可证(GFDL)1.2或者之後的版本的授權下,複製、分發、和/或修改此文件;不附帶恆常章節、封面及封底文字等其他附帶條件。使用此文件時請標示作者姓名,並以相同方式分享。关于GFDL 1.2的协议原文,请参阅 http://www.gnu.org/licenses/fdl-1.2.html。2.任何人都可以在知识共享组织所公開發行之知识共享 署名-相同方式共享 协议(CC-BY-SA) 3.0版本的授權下,複製、分發、和/或修改此文件。使用此文件時請標示作者姓名,並以相同方式分享。关于CC-BY-SA 3.0的更多信息,请参阅 http://creativecommons.org/licenses/by-sa/3.0/。任何人都可以根据自己的需要,自由地从上面的两种版权协议里面,選擇其中一种協議使用此文件,也可以同时選擇上面的两种版权协议使用此文件。

有道辞典linux桌面版相关推荐

  1. 集成创新,拓展兼容--红旗Linux桌面版5.0隆重发布(转)

    集成创新,拓展兼容--红旗Linux桌面版5.0隆重发布(转)[@more@] 随着计算机技术的迅猛发展,我们面对的将不仅仅是随之而来的信息化时代,而是我们在这个时代中是否能够创造更多的价值. 操作系 ...

  2. 红旗linux桌面版6.0 sp3,红旗Linux桌面版6.0SP1发布及下载

    在红旗Linux6.0正式版的前提下开发的,属于目前红旗Linux的最新版本 红旗Linux桌面版6.0SP1系统光盘 113b56b98d05c3b351284371804872d ftp://22 ...

  3. redflag linux6.0 sp2桌面版,红旗Linux桌面版(Red Flag Linux)

    第一次听说红旗Linux的"Favour"吗? 现在的新名词太多,你作为第二个听说的人,一点也不落伍 从09年起,针对Linux开源技术的发展特点,红旗Linux对个人版产品线做了 ...

  4. 红旗linux 桌面版 6.0 精简版 刻成光盘怎么安装不了,3分钟学会:安装红旗Linux桌面版6.0 SP1...

    红旗Linux7.0 rc1桌面版相对6.0版有较大的改进,安装方法见"图文详解:安装红旗Linux7.0 rc1桌面版"一文.地址:http://www.jinhu.me/art ...

  5. 【Linux】虚拟机安装Intel Clear Linux桌面版

    Intel的Clear Linux有两个版本,一个是桌面版(Desktop),带Gnome桌面组件的,一个是服务器版本(Server),可以理解为CentOS的控制台版本. 本次我安装的是桌面版. 新 ...

  6. Linux 桌面版太“惨”了。。。

    点关注公众号,回复"1024"获取2TB学习资源! 编译 | 苏宓 出品 | CSDN(ID:CSDNnews) Linux 诞生的 31 年间,作为一款开源且免费的操作系统,称霸 ...

  7. Linux 桌面版太“惨”:21 个图形桌面环境,只有 2 种设计

    编译 | 苏宓 出品 | CSDN(ID:CSDNnews) Linux 诞生的 31 年间,作为一款开源且免费的操作系统,称霸几乎整个 IT 服务器领域,同时全球超过 70% 的智能手机也都在运行它 ...

  8. 有道云笔记Windows桌面版v6.5.0.0去左下角广告方法

    在安装目录*\Youdao\YoudaoNote\theme文件夹下打开build.xml,Ctrl+F查找"PanelAd"和"AdWraperMid"标签, ...

  9. 红旗linux桌面版 v8.0,RedFlag最经典的红旗inWise操作系统V8.0下载

    红旗inWise操作系统V8.0英文名是Red Flag inWise V8.0,曾经让很多国内Linux用户所应用的国产操作系统,该版本是对系统软件包组件的升级和稳定性易用性的整体提升.对于老电脑的 ...

最新文章

  1. js将字符串转换为数字等类型
  2. JSON反序列的问题原因查找
  3. Scrum联盟发布2015年Scrum状况报告
  4. OpenCV 图像旋转
  5. nginx-rtmp源码概述
  6. java仔_Java基础语法吐血整理
  7. 【EMNLP2020】“自言自语”来实现无监督常识问答
  8. 线段树辅助——扫描线法计算矩形周长并(轮廓线)
  9. _.findIndex(array, [predicate=_.identity], [fromIndex=0])
  10. led投屏软件_手机投屏竖屏显示器怎么全屏
  11. java开源商城系统|代码哥如何用java小程序直播商城搭建直播带货平台技术解决方案
  12. 牛客网优惠码-直通BAT面试算法精品课购买
  13. html css字体特效,40款CSS+JS文字动画特效html源码
  14. 关于INTERVAL 函数的使用
  15. Openlayer图层载入时进行坐标系的转换
  16. [aria2c]使用aria2c下载“任务出错”的bt种子
  17. 学生成长画像系统前端的一些感悟和知识积累
  18. 分布式环境下限流器springboot实现,令牌桶
  19. 【sfu】network线程和主线程
  20. 计算机专业前端实习生的实习经历

热门文章

  1. 最新智商测试html5,超准《IQ测试》,在线《智商测试》
  2. 如何在Vue3中使用Hooks
  3. 微商泛滥 朋友圈还是社交圈吗
  4. 玩转电机驱动——电机编码器
  5. 算法笔记_图算法专题_关键路径 AOV网和AOE网
  6. IDEA编译报错“程序包XXX不存在”
  7. linux系统 exe文件怎么打开方式,linux操作系统下,exe文件为什么打不开?
  8. matlab变量设置笔记1
  9. CVPR-2020笔记 | 文末送书
  10. 计算机全国211院校排名2015,2015年全国211大学名单排名汇总