waue/2009/1126: yahooTrans.py

File yahooTrans.py, 2.3 KB (added by waue, 14 years ago)
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3import pygtk
4import gtk
5import gtk.glade
6import urllib
7import urllib2
8import threading
9import re
10import sys
11
12#class trans(threading.Thread):
13class trans(threading.Thread):
14
15    def __init__(self):
16        threading.Thread.__init__(self, name='trans')
17        self.url='http://fanyi.cn.yahoo.com/translate_txt'
18        self.text=None
19        self.trans_in=''
20        self.trans_out=''
21        self.text_out=None
22        self.text_in=None
23       
24    def getText(self,widget):
25        buf=widget.get_buffer()
26        b,e=buf.get_bounds()
27        return buf.get_text(b,e)
28       
29    def setText(self,widget,text=''):
30        buf=widget.get_buffer()
31        buf.set_text(text)
32        widget.set_buffer(buf)
33       
34    def run(self):
35        self.setText(self.text_out,'正在翻译')
36       
37        values={'ei':'UTF-8',\
38                'fr':'',\
39                'lp':'%s_%s' %(self.trans_in,self.trans_out),\
40                'trtext':'%s' %(self.getText(self.text_in).replace('\n','\r\n\r'),)}       
41        data=urllib.urlencode(values)
42        request=urllib2.Request(self.url,data)
43        conn=urllib2.urlopen(request)
44        res=conn.read()
45        res=re.findall('<div id="pd" class="pd"> (.{1,})</div>',res)
46        res=res[0].replace('<br/>','\n')
47        res=res.replace('<dnt> </dnt>','\n')
48        self.setText(self.text_out,res)
49       
50       
51class yahooTrans():
52
53    def __init__(self):
54        self.ui_file=sys.path[0]+'/ui.glade'
55        self.widgetTree=gtk.glade.XML(self.ui_file,'window1')
56        dic={"on_exit_clicked":gtk.main_quit,\
57             "on_window1_destroy":gtk.main_quit,\
58             "on_to_zh_clicked":self.toZh,\
59             "on_to_en_clicked":self.toZh}
60        self.widgetTree.signal_autoconnect(dic)
61       
62    def toZh(self,widget):
63        print widget.get_name()
64        t=trans()
65        t.text_in=self.widgetTree.get_widget('text_in')
66        t.text_out=self.widgetTree.get_widget('text_out')
67        if widget.get_name()=='to_zh':
68            t.trans_in='en'
69            t.trans_out='zh'
70        else:
71            t.trans_in='zh'
72            t.trans_out='en'
73        t.setDaemon(True) 
74        t.start()
75
76    def main(self):
77        gtk.main()
78       
79if __name__=='__main__':
80    gtk.gdk.threads_init()
81    app=yahooTrans()
82    app.main()