PythonのAPIは、Baiduのアプリケーションを呼び出す - 小さな翻訳者

urllibはライブラリを使用します

urllibはのライブラリがあるのpython 最も一般的に使用されるの標準ライブラリのPython ページの内容を読み取ると、ユーザーがローカルのテキストファイルとしてアクセスすることを可能にするウェブアクセスモジュール。

urlib.request モジュール開いて読み取るために使用されるURLを

urlib.errorのモジュールは含まれていurlib.request 生成されたエラーを、することができますしてみてくださいキャプチャを

urlib.parse モジュールはいくつかの分析が含まれたURLのメソッドを

urlib.robotparserのモジュール解析するために使用robots.txtのテキストファイルを

 

ケースリトル翻訳者:

デザインのアイデア:

1. 使用して百度は、に変換http://api.fanyi.baidu.com/api/trans/vip/translate このURL アドレスポスト送信方法6つの大アクセスサービス要求パラメータを---- と署名と署名の計算を生成します

2. フォーマット変換と取得のJSON データ形式を結果- 署名がに変わり、UTF8 および翻訳BaiduのURL UTF8にして、復号化され、読みJSON オープンフォーマット変換BaiduのURL

3. クリックして翻訳のイベント:ユーザー入力を取得- と翻訳

変数値の変更を追跡し、更新された値が画面に表示されます

4. 空のイベント

インタフェースのレイアウト設計

 

Tkinterのインポートから*

urllibはインポート要求から

urllibはインポートの解析から

輸入JSON

輸入hashlib

輸入ランダム

デフtranslate_Word(en_str):

    URL = 'http://api.fanyi.baidu.com/api/trans/vip/translate'

    #1 en_str =入力(「翻訳するコンテンツを入力してください:」)

    #は、作成Form_Dataのサーバーに送信され保存され、辞書をデータ

    #Form_Data = { 'から': 'EN'、 'に': 'ZH'、 'クエリ':en_str、 'transtype': 'ハッシュ'}

    Form_Data = {}

    Form_Data [ 'から'] = 'EN'             

    Form_Data [ 'と'] = 'ZH'

    Form_Data [ 'Q'] = en_str # データを変換します

    Form_Data [ 'transtype'] = 'ハッシュ'

    Form_Data [ 'APPID'] = ' 20151113000005349' #のアプリケーションAPP ID

    Form_Data [ '塩'] STR = (random.randint(32768、65536))#のnonceを

    キー=「osubCEzlGjzvw8qdQc41」#プラットフォームの分散キー

    M = Form_Data [ 'APPID'] + en_str + Form_Data [ '塩'] +キー

    m_MD5 = hashlib.md5(m.encode( 'UTF8'))

    Form_Data [ 'サイン'] = m_MD5.hexdigest()

 

    データ= parse.urlencode(Form_Data).encode( 'UTF-8')#の使用でurlencodeの標準フォーマットを変換する方法

    応答= request.urlopen(URL、データ) #1 パス要求データ・オブジェクト及びフォーマット変換終了

    HTML = response.read()。デコード( 'UTF-8')#は、 読み取り、情報を復号します

    translate_results = json.loads(HTML)#使用JSON

    印刷(translate_results)#のうち印刷JSON データ

    translate_results = translate_results [ 'trans_result'] [0] [ 'DST']#は、 翻訳を見つけました

    印刷(「翻訳の結果は次のとおりです。%のSは」%translate_results)#の印刷翻訳情報

    リターンtranslate_results

デフleftClick(イベント):#ボタン機能のイベントを翻訳

   #print( "X -軸座標:"、event.x)

   #print( "Y -軸座標:"、event.y)

   en_str = Entry1.get()#は、コンテンツを翻訳するために得ます

   印刷(en_str)

   VTEXT = translate_Word(en_str)

   #Entry2.config(ENTRY2、テキスト= VTEXT )# ラベルテキストのヒントを変更します

   s.set( "")

   Entry2.insert(0、VTEXT)

デフleftClick2(イベント):#クリアボタンイベント機能

   s.set( "")

   #Entry2.config(ENTRY2、テキスト= VTEXT )# ラベルテキストのヒントを変更します

   Entry2.insert(0、 "")

                         

__name__ == "__main__" の場合:

    ルート= Tkの()

    root.title( " 単語翻訳")

    ルート[ '幅'] = 250;ルート[ '高'] = 130

    ( 'ルート、テキスト=ラベル入力の内容を変換する:'、幅= 15).place(X = 1、Y = 1)#絶対座標(1 1

    entry1を=エントリ(ルート、幅= 20)

    Entry1.place(X = 110、Y = 1)# 絶対座標(110 1

    ラベル(ルート、テキスト= ' :翻訳結果.place'幅= 18である)(X = 1、Y = 20)#絶対座標(1 20

    S = STRINGVAR()#STRINGVAR()オブジェクト  

    s.set( "")

    ENTRY2 =エントリ(ルート、幅= 20、textvariable =秒)

    Entry2.place(X = 110、Yは= #20) 絶対座標(110 20

 

    ボタン1 =ボタン(根、テキスト= ' 翻译'、幅= 8)

    Button1.place(X = 40、Yが= #80) 絶対座標(40 80

    ボタン2 =ボタン(根、テキスト= ' 清空'、幅= 8)

    Button2.place(X = 110、Yは= #80) 絶対座標(110 80

    #には、ラベルバインドマウスリスナーイベントを

    Button1.bind( "<ボタン-1> "、leftClick)# ボタンを翻訳

    Button2.bind( "<ボタン-1> "、leftClick2)# クリアボタン

    root.mainloop()

 

おすすめ

転載: www.cnblogs.com/dbslinux/p/11535965.html