本帖最后由 二哲科技 于 2021-4-11 15:33 编辑

1.介绍
Python属于跨平台的软件,最近想在Linux下翻译文本,但是Linux没发现好用的翻译软件,本来下载了【星际译王】这款软件,但是好像不能联网翻译,只能使用离线的字典进行翻译,所以就想自己做一个联网的翻译软件,那么就有了这个设计。
2.tkinter
tkinter是Python自带的一款GUI界面,这款GUI是比较基础的,就是基本控件都有,但是属性相对较少,很难制作出好看的GUI来,为什么要选择这个GUI框架呢,因为是Python自带的,使用起来比较方便,而且这个软件也是比较简单的一款软件,不需要过于华丽的界面,所以我优先选择了它。
3.设计
其实设计非常简单,这里需要用到两个库分别是【tkinter】和【threading】这两个库,一个是GUI库一个是线程库,线程库主要是为了在翻译的过程中,GUI能够正常工作,今天这一篇先写GUI的设计,下一篇写如何连接Goolge翻译。
今天采用的编辑器是gVim,主要是为了能和Linux基本保持同步。
1.png

图1

直接贴代码吧!
import tkinter as tk
  • import threading
  • translateWindow = tk.Tk()   # Window body
  • framMain = tk.Frame(translateWindow)    # Create Main fram
  • txtSource = tk.Text(framMain, height=4) # Create Main fram
  • framConfig = tk.Frame(framMain)         # Create Main fram
  • txtResult = tk.Text(framMain, height=4) # Source text output
  • def en_translate_cn_run():
  •     var = txtSource.get(1.0, "end")  # read source data
  •     txtResult.delete(1.0, "end")
  •     txtResult.insert("insert", var)  # display translate result data
  •     pass
  • def en_translate_cn_opt():
  •     txtResult.delete(1.0, "end")
  •     txtResult.insert("insert", "翻译中...")
  •     en_translate_cn_timer = threading.Timer(0.1, en_translate_cn_run)
  •     en_translate_cn_timer.start()
  •     pass
  • btnToChTranslate = tk.Button(framConfig, text="TranslateToCh", command=en_translate_cn_opt)    # Translate button
  • def ch_translate_en_run():
  •     var = txtSource.get(1.0, "end")     # read source data
  •     txtResult.delete(1.0, "end")
  •     txtResult.insert("insert", var)     # display translate result data
  •     pass
  • def ch_translate_en_opt():
  •     txtResult.delete(1.0, "end")
  •     txtResult.insert("insert", "翻译中...")
  •     en_translate_cn_timer = threading.Timer(0.1, ch_translate_en_run)
  •     en_translate_cn_timer.start()
  •     pass
  • btnToEnTranslate = tk.Button(framConfig, text="TranslateToEn", command=ch_translate_en_opt)    # Translate button
  • def window_init():
  •     # Main window config
  •     translateWindow.title("EZ Translate Tool")
  •     translateWindow.geometry("300x200")
  •     framMain.pack()
  •     txtSource.pack()
  •     framConfig.pack()
  •     btnToChTranslate.pack(side="left")
  •     btnToEnTranslate.pack(side="right")
  •     txtResult.pack()
  •     pass
  • if __name__ == '__main__':
  •     window_init()
  •     translateWindow.mainloop()
  • 复制代码
    可以看到代码不多,这里也不添加过多的注释,因为代码就可以很清楚的知道当前正在做什么。
    界面整体如下,非常的简洁,不过我觉得够用了,还可以给界面指定并透明,这样更像一个工具!!!
    2.png
    图2
    3.png

    图3

    4.总结
    用Python写代码还是非常简洁,界面也非常的容易,下一篇就是联网翻译了。