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()