pythonでどのようなアプリケーションが作成できるのでしょうか。
このような疑問点にお応えします。
PythonライブラリTkinterを用いて、デスクトップ形式のアプリケーションを作成してみます。
今回は、翻訳ツールを作成してみました。
翻訳処理は、Pythonライブラリgoogletransを使用します。
googletrans → https://pypi.org/project/googletrans/
googletransは、以下を実行してインストールしましょう。
1 |
pip install googletrans |
アプリケーションの構成は、以下になります。
テキスト入力フォームと翻訳結果を出力するためのフォームを用意します。
翻訳先の言語を選択した状態でOKボタンを押しますと翻訳結果を表示します。翻訳ツールでは、以下の言語に翻訳できるようにしています。
・日本語
・英語
・ドイツ語
・スペイン語
・フランス語
・韓国語
上記の言語以外にも、googletransで扱うことができる言語がありますので、googletransのwebページを参考にしてみてください。
また、googletransは、無料で使用することができますが、文字数の制限等があります。詳しくは、googletransのwebページを参照ください。
それでは、例文を用いまして、幾つかの出力結果を見てみます。
例文は、wikipediaのpythonに関する記事の一部を抜粋しています。
【日本語に翻訳】
【ドイツ語に翻訳】
【フランス語に翻訳】
CLEARボタンを押すことで、入力状態をクリアすることができます。
ソースコードを記載しますので、ソースコードを編集してみて、どのような影響があるのか確認するのも良いと思います。
python 3.7.1を使用しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# coding: utf-8 import tkinter as tk import tkinter.ttk as ttk from tkinter import messagebox as mbox from googletrans import Translator class TranslatorTool: def __init__(self): # ウィンドウ設定 self.win = tk.Tk() self.win.title(u'翻訳ツール') self.win.minsize(width=500, height=350) self.win.maxsize(width=500, height=350) # ラベル設定 self.label = tk.Label(self.win, text=u'翻訳ツール') self.label.place(x=0, y=0) # 入力フォームとスクロールバーの設定 テキスト入力 self.input_text_label = tk.Label(self.win, text='テキスト入力フォーム:(5000文字制限)') self.input_text_label.place(x=10, y=20) self.input_text_form = tk.Text(self.win) self.input_text_form.place(x=10, y=40, width=200, height=200) input_scroll = tk.Scrollbar(self.win, orient=tk.HORIZONTAL, command=self.input_text_form.xview) input_scroll.pack(side=tk.BOTTOM, fill="x") self.input_text_form["yscrollcommand"] = input_scroll.set # 出力フォームとスクロールバーの設定 翻訳結果 self.translate_label = tk.Label(self.win, text='翻訳結果:') self.translate_label.place(x=250, y=20) self.res_translate_form = tk.Text(self.win) self.res_translate_form.place(x=250, y=40, width=200, height=200) output_scroll = tk.Scrollbar(self.win, orient=tk.HORIZONTAL, command=self.res_translate_form.xview) output_scroll.pack(side=tk.BOTTOM, fill="x") self.res_translate_form["yscrollcommand"] = output_scroll.set # ボタン配置 self.radio_text = {u'日本語':'ja', u'英語':'en', u'ドイツ語':'de', u'スペイン語':'es', u'フランス語':'fr', u'韓国語':'ko'} self.radio_var = tk.IntVar() for index, (key, value) in enumerate(self.radio_text.items()): self.radio = tk.Radiobutton(self.win, value=index, variable=self.radio_var, text=key) self.radio.place(x=80*index, y=250) self.radio_var.set(0) # print(self.radio_var.get()) tk.Button(self.win, text='OK', command=self.okButton_click).place(x=10, y=280) tk.Button(self.win, text='CLEAR', command=self.cancelButton_click).place(x=40, y=280) def okButton_click(self): text_data = self.input_text_form.get('1.0', 'end -1c') if len(text_data) <= 5000: translator = Translator() res = translator.translate(text_data, dest=list(self.radio_text.values())[self.radio_var.get()]) self.res_translate_form.delete('1.0', 'end') self.res_translate_form.insert(tk.END, res.text) else: mbox.showinfo(u'入力エラー', u'5000文字以下で入力してください。') def cancelButton_click(self): self.input_text_form.delete('1.0', 'end') self.res_translate_form.delete('1.0', 'end') self.radio_var.set(0) def start_loop(self): self.win.mainloop() if __name__ == '__main__': sampleBox = TranslatorTool() sampleBox.start_loop() |