2017-07-12 6 views
1

私は、Python 3.5にクライアントを組み込み、サイトから完成した翻訳ジョブを取得するために使用できます。使い勝手の理由から、翻訳されたコンテンツをクリップボードにコピーするボタンを使用することに決めました。翻訳がプレーンテキストであるかファイルに保存されているかによって、ボタンには「ダウンロード」または「クリップボードにコピー」のいずれかが表示されます。tkinterスクリプトでpyperclipを使用してクリップボードに保存するときのエンコーディング

ほとんどの場合、ボタンをクリックして内容をテキストエディタに貼り付けるだけで問題なく英語のテキストをコピーして貼り付けることができます。

残念ながら、ドイツ語(ä、ö、üのようなもの)を扱うとき、私はいくつかのファンキーなキャラクターを手に入れ、日本人は変わってしまいます。

def retrieveJobs(self): 

    availableJobIDs = gengo.getTranslationJobs(status='reviewable')['response'] 

     text_count = 0 
     text_dict = {} 
     file_count = 0 
     file_dict = {} 

     for i in range(len(availableJobIDs)): 

     job = gengo.getTranslationJob(id=availableJobIDs[i]['job_id'])['response']['job'] 

     title = job['slug'] 
     titleLabel = tk.Label(self, text=title) 
     titleLabel.grid(row=i+3, sticky=tk.E) 


     if 'file_url_tgt' in job.keys(): 
       link = job['file_url_tgt'] 
       file_dict[file_count] = link 
       linkButton = tk.Button(self, text='ダウンロード', 
             command=lambda file_count=file_count: urllib.request.urlopen(url=file_dict[file_count])) 
       linkButton.grid(row=i+3, column=1, sticky=tk.W+tk.E) 
       file_count += 1 
     else: 
       text = job['body_tgt'] 
       text_dict[text_count] = text 
       copyButton = tk.Button(self, text='訳文をコピーする', 
             command=lambda text_count=text_count: tk.clipboard_append(text_dict[text_count])) 
       copyButton.grid(row=i+3, column=1, sticky=tk.W) 
       text_count += 1 

これはどのように動作し、すべての順序のどこに表示する短いテキストです。 

は(ないように私は、日本語でテキストをコピーするためのいずれかのボタンを押すと、スクリプトの頭部が、しかし

# -*- coding: utf-8 -*- 

が付いています意味を気にして、ぎこちない)Wordファイルにコピーすると、結果のテキストは次のようになります。

これはどのように動作し、すべての順序のどこに表示する短いテキストです。 

日本語の文字を正しく表示するようにコードを変更するにはどうすればよいですか?コードに見られるように、テキストは辞書に格納され、その時点ではそのままです。 pyperclipでそれを引き出すときだけ、それはすべてファンキーになる。

説明は十分です。

ありがとうございます!

copyButton = tk.Button(self, 
         text='訳文をコピーする', 
         command=lambda text_count=text_count: tk.clipboard_append(text_dict[text_count])) 

機能のバージョンは、次のようになります:ドイツ語または日本語で

copyButton = tk.Button(self, 
         text='訳文をコピーする', 
         command=lambda text_count=text_count: root.clipboard_append(text_dict[text_count])) 

これ以上のファンキーな文字

+0

Python 2.xまたは3? –

+0

申し訳ありません、3.5。説明に追加されます! –

+1

'# - * - coding:utf-8 - * - 'はソースコードがutf8でエンコードされていることをPythonコンパイラに伝えます。 – Gribouillis

答えて

1

は、私はここだけの小さな調整をしなければならなかったが判明します。フランス語や中国語などの他の言語も機能しています。

入力いただきありがとうございます。それはコードの新しい視点を得るために多くの助けとなりました。

+0

あなたの微調整で 'root'は何を指していますか? –

+0

'root'は、プログラムのメインフレーム(' tk.Tk() 'メソッドを介して)を指し、すべてのクラスが定義された後に開始されます。 コピー方法をプログラムのさまざまなレベルにバインドしようとしました。最も基本的なものであるルートウィンドウから始めました。私の驚いたことに、それはすぐに働いた。 –

関連する問題