全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用 python+pygtk+glade3 实现Yahoo翻译桌面版2009-03-15 2200#转这个代码,方便学习pygtk,对比了tk和wx,发现还是pygtk好点。#转自index.phpa=post&bid=17每次翻译都去yahoo的网站不是很方便,所以自己写了一个Yahoo翻译桌面版) 整个程序用 python 做为编码语言, pygtk 库实现 gui。为了方便,用glade3画了界面。先来看看最终的程序界面吧:(由于我用不到别的外语,所以功能上只有英汉互译。)首先,在开始编码之前,分析一下yahoo翻译的网页()来确定程序的核心逻辑。Yahoo翻译的网页源码很简单,一目了然,不像google翻译的网页有这么多花哨的ajax,每次翻译都是向translate_txtPOST数据,格式为“ei=UTF-8&fr=&lp=en_zh&trtext=”英译中对应的lp值为en_zh,中译英对应的lp值为zh_en,trtext就是原文的内容。分析好了就可以开始编码了) 贴出程序的完整源码:#!usrbinenv python# - coding utf-8 -#导入库文件import pygtkimport gtkimport gtk.gladeimport urllibimport urllib2import threadingimport reimport sys #翻译功能类,继承于一个线程类。class trans(threading.Thread) #初始化 def _init_(self) threading.Thread._init_(self, name=trans) self.url=translate_txt self.text=None self.trans_in= self.trans_out= self.text_out=None self.text_in=None def getText(self,widget) buf=widget.get_buffer() b,e=buf.get_bounds() return buf.get_text(b,e) def setText(self,widget,text=) buf=widget.get_buffer() buf.set_text(text) widget.set_buffer(buf) def run(self) self.setText(self.text_out,正在翻译) values=eiUTF-8, fr, lp%s_%s %(self.trans_in,self.trans_out), trtext%s %(self.getText(self.text_in).replace(n,rnr),) data=urllib.urlencode(values) request=urllib2.Request(self.url,data) conn=urllib2.urlopen(request) res=conn.read() res=re.findall(div id=pd class=pd (.1,)div,res) res=res0.replace(br,n) res=res.replace(dnt dnt,n) self.setText(self.text_out,res)#主界面类class yahooTrans() def _init_(self) self.ui_file=sys.path0+ui.glade self.widgetTree=gtk.glade.XML(self.ui_file,window1) dic=on_exit_clickedgtk.main_quit, on_window1_destroygtk.main_quit, on_to_zh_clickedself.toZh, on_to_en_clickedself.toZh self.widgetTree.signal_autoconnect(dic) def toZh(self,widget) print widget.get_name() t=trans() t.text_in=self.widgetTree.get_widget(text_in) t.text_out=self.widgetTree.get_widget(text_out) if widget.get_name()=to_zh t.trans_in=en t.trans_out=zh else t.trans_in=zh t.trans_out=en t.setDaemon(True) t.start() def main(self) gtk.main()#入口,gtk主程序循环if _name_=_main_ gtk.gdk.threads_init() app=yahooTrans() app.main()可见,程序中用到了多线程:把翻译过程放在另一个线程中执行。这是因为这个是在线翻译程序,点击翻译按钮后的处理过程(网络通信)相对比较漫长。所以必须使gtk主循环与处理过程(翻译)异步。如果直接把翻译过程放在按钮消息映射函数(def toZh(self,widget))中的话,那么程序在读取网络的时候,整个界面会僵死,直至处理完成。还有,程序界
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年低空经济产业集群空间创新研究报告
- 2026-2031中国宠物饲料行业盈利现状及投资战略研究报告
- 2026-2031中国工艺陶瓷行业市场分析及发展前景评估报告
- 技术支持与售后服务协议
- 2025年采掘工人入职考试题库及答案
- 幼儿园各类安全应急预案
- 2025年国家安全知识竞赛题库及答案
- 人教版道德与法治七年级下册 1.2 成长的不仅仅是身体 教学设计
- 2025年酒店管理运营主管职业技能考试试题及答案
- 2025年应急处置常识知识考察试题及答案解析
- DL∕T 333.2-2013 火电厂凝结水精处理系统技术要求 第2部分:空冷机组
- JG-T 562-2018 预制混凝土楼梯
- 人教版(PEP)小学英语-(三四五六年级)-单词表(附注音标)
- T-CCIIA 0004-2024 精细化工产品分类
- 博途软件界面概述讲解
- TD/T 1060-2021 自然资源分等定级通则(正式版)
- 甲醇卸车过程风险安全技术培训
- 知识点5.2 乳胶漆的原材料介绍
- 胃瘘后期护理
- 食品车间现场管理培训课件
- 农民素质培训课件
评论
0/150
提交评论