二哲科技

  • 145 主题
  • 435 帖子
  • 1603 积分
  • 身份:版主
  • 论坛新秀
  • E币:1999

【原创】Python翻译软件Part1:使用tkinter设计界面

2021-4-11 15:31:25 显示全部楼层
本帖最后由 二哲科技 于 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

直接贴代码吧!
  1. import tkinter as tk
  2. import threading

  3. translateWindow = tk.Tk()   # Window body
  4. framMain = tk.Frame(translateWindow)    # Create Main fram
  5. txtSource = tk.Text(framMain, height=4) # Create Main fram
  6. framConfig = tk.Frame(framMain)         # Create Main fram
  7. txtResult = tk.Text(framMain, height=4) # Source text output

  8. def en_translate_cn_run():
  9.     var = txtSource.get(1.0, "end")  # read source data
  10.     txtResult.delete(1.0, "end")
  11.     txtResult.insert("insert", var)  # display translate result data
  12.     pass

  13. def en_translate_cn_opt():
  14.     txtResult.delete(1.0, "end")
  15.     txtResult.insert("insert", "翻译中...")
  16.     en_translate_cn_timer = threading.Timer(0.1, en_translate_cn_run)
  17.     en_translate_cn_timer.start()
  18.     pass

  19. btnToChTranslate = tk.Button(framConfig, text="TranslateToCh", command=en_translate_cn_opt)    # Translate button

  20. def ch_translate_en_run():
  21.     var = txtSource.get(1.0, "end")     # read source data
  22.     txtResult.delete(1.0, "end")
  23.     txtResult.insert("insert", var)     # display translate result data
  24.     pass

  25. def ch_translate_en_opt():
  26.     txtResult.delete(1.0, "end")
  27.     txtResult.insert("insert", "翻译中...")
  28.     en_translate_cn_timer = threading.Timer(0.1, ch_translate_en_run)
  29.     en_translate_cn_timer.start()
  30.     pass

  31. btnToEnTranslate = tk.Button(framConfig, text="TranslateToEn", command=ch_translate_en_opt)    # Translate button

  32. def window_init():
  33.     # Main window config
  34.     translateWindow.title("EZ Translate Tool")
  35.     translateWindow.geometry("300x200")

  36.     framMain.pack()
  37.     txtSource.pack()
  38.     framConfig.pack()
  39.     btnToChTranslate.pack(side="left")
  40.     btnToEnTranslate.pack(side="right")
  41.     txtResult.pack()
  42.     pass

  43. if __name__ == '__main__':
  44.     window_init()
  45.     translateWindow.mainloop()

可以看到代码不多,这里也不添加过多的注释,因为代码就可以很清楚的知道当前正在做什么。
界面整体如下,非常的简洁,不过我觉得够用了,还可以给界面指定并透明,这样更像一个工具!!!
2.png
图2
3.png

图3

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

您需要登录后才可以评论 登录 | 立即注册

最新评论

楼层直达:

电子阔少

  • 109 主题
  • 455 帖子
  • 1289 积分
  • 身份:实习版主
  • 论坛新秀
  • E币:1495
电子阔少 2021-4-11 23:09:49 显示全部楼层
第一步设计界面
Python现在很火啊
看来楼主是做系列文章了,
期待后续

点评

Python主要好入门,小白一周基本就可以入门了。还有跨平台功能也比较好,最近准备转Linux所以就用Python做点小工具在Linux下使用。  详情 回复 发表于 2021-4-12 09:18

二哲科技

  • 145 主题
  • 435 帖子
  • 1603 积分
  • 身份:版主
  • 论坛新秀
  • E币:1999
二哲科技 2021-4-12 09:18:28 显示全部楼层
电子阔少 发表于 2021-4-11 23:09
第一步设计界面
Python现在很火啊
看来楼主是做系列文章了,

Python主要好入门,小白一周基本就可以入门了。还有跨平台功能也比较好,最近准备转Linux所以就用Python做点小工具在Linux下使用。

点评

找点时间整个一周时间学学试试  详情 回复 发表于 2021-4-12 22:50

电子阔少

  • 109 主题
  • 455 帖子
  • 1289 积分
  • 身份:实习版主
  • 论坛新秀
  • E币:1495
电子阔少 2021-4-12 22:50:38 显示全部楼层
二哲科技 发表于 2021-4-12 09:18
Python主要好入门,小白一周基本就可以入门了。还有跨平台功能也比较好,最近准备转Linux所以就用Python ...

找点时间整个一周时间学学试试

点评

一周时间差不多~  详情 回复 发表于 2021-4-13 09:25
广告

我的果果超可爱

  • 190 主题
  • 528 帖子
  • 2195 积分
  • 身份:版主
  • 灌水之王
  • E币:1414
这样写tkinter 一个弹窗还是俩弹窗呀

点评

目前我弄得是一个  详情 回复 发表于 2021-4-13 09:24

二哲科技

  • 145 主题
  • 435 帖子
  • 1603 积分
  • 身份:版主
  • 论坛新秀
  • E币:1999
二哲科技 2021-4-13 09:24:49 显示全部楼层
我的果果超可爱 发表于 2021-4-13 08:24
这样写tkinter 一个弹窗还是俩弹窗呀

目前我弄得是一个

点评

我用的message box 我弹出来俩,笑死我了。  详情 回复 发表于 2021-4-13 11:13

二哲科技

  • 145 主题
  • 435 帖子
  • 1603 积分
  • 身份:版主
  • 论坛新秀
  • E币:1999

我的果果超可爱

  • 190 主题
  • 528 帖子
  • 2195 积分
  • 身份:版主
  • 灌水之王
  • E币:1414
快速回复
7
2
广告
关闭 热点推荐上一条 /4 下一条
快速回复 返回列表