超实用可执行程序-PDF文字复制后的回车符去除和谷歌百度英汉翻译-python GUI

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/songyunli1111/article/details/81910863

超实用可执行程序-PDF文字复制后的回车符去除和谷歌百度英汉翻译-python GUI

痛点

PDF文档文字复制会包括回车符,使得文字粘贴和翻译都不方便,尤其是对于双栏的PDF。

界面与功能

这里写图片描述

以下为详细说明和过程记录,废话有点多,需要直接使用的,可略过,这里先送上代码和可执行文件exe的Github传送门:

RemoveLineBreakAndTranslate

希望对你有帮助。如果有的话就点个star吧~

功能详细说明:

语言选择:使用回车去除功能和翻译功能时,一定要先进行语言选择,才能得到正确的结果。选择的语言是输入框中对应的语言类别,默认选择为英文。
回车去除:对于中文,回车符会被直接去除,而对于英文,回车符会被替换为空格以保证英文单词间的分割。
这里写图片描述

这里要注意的一点是:因为有时候英文论文中每句结尾单词较长时,会以’-‘连接,但实际情况中也会有复合单词包含’-‘符,因此’-‘可能对应多种情况,在该软件中暂未考虑,使用时请自行注意。

清空:清空当前文本框中的内容,以方便再次输入
复制:把当前文本框中的内容复制到剪切板
退出:关闭程序,为防止手滑误点,点击退出按钮后会弹出提示,确认后退出
百度翻译:调用的百度翻译官方api,可以实现英汉互译,但前提是你已进行正确的语言选择。相应实现参考自:Python3调用百度翻译API,实现实时翻译

这里写图片描述

该软件中,第二个框即是第一个框的输出框,输出去除回车符之后的文字,也是第三个框的输入框,输入要翻译的内容。一二框一起可以单独使用,二三框一起也可以单独使用,即在二框中输入无回车符的内容,选择百度翻译即可得到翻译结果。

谷歌翻译网页跳转:可能百度翻译的结果,你并不满意,可以选择谷歌翻译,但谷歌翻译官方api需收费,当然网上有通过爬虫进行页面爬取的,但谷歌有反爬虫的机制,破解操作较为麻烦,因此这里仅支持默认浏览器谷歌翻译网页跳转。

注意:1、首先请一定记得进行语言选择,默认是英文;2、翻译需在联网环境下,默认也仅支持英汉互译;3、如果翻译出错或不是你想要的内容,可能是你忘了语言选择;4、因为是exe文件,因此该可执行文件只能在windows下运行。Linux下可以从终端运行python程序,但要确保安装了相应的库。依赖库包括:

#Tkinter GUI
from tkinter import *
from tkinter.ttk import *
from tkinter.messagebox import *

import pyperclip    #剪切板读写
import webbrowser   #网页跳转

#爬虫和解析
import http.client
import hashlib
import json
import urllib
import random

过程记录

  • 编程前
    • 列写功能提纲
    • 手绘基本界面
    • 简单学习Python GUI
  • 编程中
    • GUI界面搭建
    • 功能函数实现
    • 检查测试完善
  • 编程后
    • exe程序生成
    • GitHub上传
    • 博客教程编写

代码和组件分析

1、主函数进行窗口初始化,整个窗口界面由Tk()给出,并设置大小和名称,保持持续的运行。

if __name__=='__main__':
    window = Tk()
    window.geometry("620x630") #设置窗口大小
    window.title("回车去除和英汉互译")
    myGui=RemoveLineBreakAndTranslate(window)
    window.mainloop()

2、对象RemoveLineBreakAndTranslate中给出了每一个组件及对应的功能函数。本软件中用到了以下组件:

  • LabelFrame容器组件:它就像一个容器,能够将内部的组件包含在一个框内,以分隔其他的部分,能进行复杂的窗口布局。
LabelFrame1=LabelFrame(window,text="输入",height=50,width=100)
LabelFrame1.grid(row=1,column=0,columnspan=3,padx=10,pady=10,sticky=W)
LabelFrame1.propagate(0)    # 使组件大小不变,此时width才起作用
  • Label标签:静态文本,作为显示和说明。
label1=Label(LabelFrame1,text="语言选择:")
label1.grid(row =1,column =2,columnspan=2)
  • Radiobutton单选按钮:单选选择,一次只能选中其中一个。
#英汉单选框
self.languageSet=IntVar()
self.languageSet.set(1)      #选中默认按钮
EnglishButton=Radiobutton(LabelFrame1,text="英",variable = self.languageSet,value=1)
ChineseButton= Radiobutton(LabelFrame1,text="中",variable=self.languageSet,value=2)
EnglishButton.grid(row=2,column=2)
ChineseButton.grid(row=2,column=3)
  • Text文本框和Scrollbar滚动条:强大的文本框可以作为多行文本的输入输出,显示和编辑,还能操作图片。滚动条常和文本框配合使用,以方便大量文本的显示。
#输入框
self.input=StringVar()
inScrollbar=Scrollbar(LabelFrame1)      #侧边滚动条
self.inText=Text(LabelFrame1,height=10,width=65)
inScrollbar.config(command=self.inText.yview)
self.inText.config(yscrollcommand=inScrollbar.set)
self.inText.grid(row=1,column=0,rowspan=4,sticky=W,padx=10,pady=10)
inScrollbar.grid(row=1,column=1,rowspan=4)
self.inText.focus()                     #开始运行时的光标位置
  • Button按钮:这个就非常常用了,它可以绑定对应的功能,按下即触发操作。
#清空按钮
cleanButton=Button(LabelFrame1,text="清空",command=self.clean)
cleanButton.grid(row=4,column=2,columnspan=2)
  • messagebox消息框: messagebox中有很多种类型的消息框,包括提醒,警告,询问等。
flag=askyesno(title='Yes or No',message='Are you sure to quit?')
if flag:
    window.destroy()
else:
    pass

exe程序生成记录

Python 用于封装的库包括:PyInstaller, py2exe, wxPython等。这里使用了PyInstaller来封装。

未安装的朋友可用pip或conda安装

本人按照Python | 用Pyinstaller打包发布exe应用中所述方法,在python3\Scripts下进行操作,并未成功,出现错误:failed to create process。之后尝试在Anaconda\Scripts下进行操作,终于成功生成exe。过程如下:

封装过程需要准备代码和图标:

这里写图片描述

图标为.icon格式,可通过其他格式转换,推荐转换网站:在线Favicon.ico制作转换工具

首先,打开Anaconda Prompt,切换目录到Anaconda\Scripts下,再输入以下指令:

pyinstaller.exe -i H:\python\Python3\Py3Project\RemoveLineBreak\dolphin.ico -F H:\python\Python3\Py3Project\RemoveLineBreak\dolphin.py 

这里写图片描述

说明:

-i指令: 自定义图标

-F指令: 把应用打包成一个独立的exe文件,否则是一个带各种dll和依赖文件的文件夹

注意指令区分大小写

-i H:\python\Python3\Py3Project\RemoveLineBreak\dolphin.ico 为图标所在文件夹,请更换成你自己的文件夹;

-F H:\python\Python3\Py3Project\RemoveLineBreak\dolphin.py 为程序所在文件夹,请更换成你自己的文件夹。

运行成功后的显示如下:

这里写图片描述

运行成功后Anaconda\Scripts下会新出现三个文件:

这里写图片描述

exe在dist文件夹中,第一、三个文件可以删除。双击dist文件夹下的dolphin.exe,程序就可以使用了。

如果python程序需要依赖其他文件夹时,最后的操作过程会有些区别,具体过程可参考:知乎的一个回答

结语

对程序代码细节不关心的可以直接运行exe文件,想了解和学习代码具体实现的可以看一下原码。
笔者也是新手,产品也不完善,有任何问题或需求都可以在博客下提出,你就是我的产品经理~
Anyway,希望对你有帮助。如果有的话就点个star吧~
github地址:RemoveLineBreakAndTranslate

对于学习中遇到的问题和痛点,当你尝试自己去解决时,会收获不一样的快乐!

猜你喜欢

转载自blog.csdn.net/songyunli1111/article/details/81910863
今日推荐