!usrbinenv python

-- coding utf-8 --

import pygtk import gtk
import gtk.glade import urllib import urllib2 import threading import re import sys class trans(threading.Thread): def init(self):
threading.Thread.init(self, name='trans') self.url='httpfanyi.cn.yahoo.comtranslate_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={'ei''UTF-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=res[0].replace('br','n') res=res.replace('dnt dnt','n') self.setText(self.text_out,res)

主界面类

class yahooTrans() def init(self)
self.ui_file=sys.path[0]+'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()



blog comments powered by Disqus

Published

28 March 2014

Tags