亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python實(shí)現(xiàn)劃詞翻譯

 更新時(shí)間:2020年04月23日 16:01:56   作者:踢飛足球  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)劃詞翻譯功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近因?yàn)榫幊?,需要大量地看一些說明文檔,無奈說明文檔都是英文的,可把我這個(gè)半桶水折騰死了,太多詞匯不知道,一個(gè)個(gè)復(fù)制翻譯太麻煩了。于是我根據(jù)自己的需要,用python寫了一個(gè)劃詞翻譯。

一、使用邏輯

由于我是看PDF文檔,用的是一款輕量級的PDF閱讀器(SumatraPDF),這款閱讀器只有5M,但是閱讀很舒服很流暢,渲染也很到位。但是沒有其他閱讀器有許多強(qiáng)大功能,比如說劃詞翻譯。

我的想法是一旦發(fā)現(xiàn)我復(fù)制就可以在當(dāng)前鼠標(biāo)位置顯示一個(gè)翻譯結(jié)果框?;谶@個(gè)想法,我一開始準(zhǔn)備使用MFC編寫,因?yàn)镸FC能夠輕易獲得系統(tǒng)消息,鉤子調(diào)用十分簡單。可是我把檢測復(fù)制,顯示文本框都做好的時(shí)候,發(fā)現(xiàn)一個(gè)悲傷的事實(shí),c++的http庫實(shí)在是不怎么樣,竟然無法訪問http://地址,經(jīng)過一晚的嘗試——失敗,這才打算使用python。啰啰嗦嗦一大堆,我現(xiàn)在把我的邏輯說下吧。

二、需要引用的庫

因?yàn)橐?lián)網(wǎng)所以需要urllib,解析網(wǎng)頁需要json,讀取剪切板數(shù)據(jù)需要win32clipboard,獲得當(dāng)前鼠標(biāo)信息用PyMouse,生成文本框Tkinter,定時(shí)器time。python為什么強(qiáng)大,就在于集成庫的易用性和多樣性,有什么需要就pip install 裝就行,這點(diǎn)比c++強(qiáng)太多了。

import urllib #http連接需要用到
import json #解析網(wǎng)頁數(shù)據(jù)用
import win32clipboard as wc #讀取剪切板數(shù)據(jù)
from pymouse import PyMouse #獲得當(dāng)前鼠標(biāo)信息
import Tkinter   #自帶的GUI庫,生成文本框
import time   #定時(shí)器,減少占用

三、代碼實(shí)現(xiàn)

我這里先定義了三個(gè)函數(shù),方便后面實(shí)現(xiàn)功能,下面有詳細(xì)解釋和代碼

#PyMouse得到的是2維字符串,但是tkinter生成窗體時(shí)需要的是類似(100*100+x+y)的字符串,100*100是窗口大小,xy是坐標(biāo)點(diǎn)。
def transMousePosition():
 m = PyMouse()
 return "100x100+"+str(m.position()[0])+"+"+str(m.position()[1])
#獲得剪切板數(shù)據(jù) 
def getCopyText():
 wc.OpenClipboard()
 copy_text = wc.GetClipboardData()
 wc.CloseClipboard()
 return copy_text
#返會是否有新的復(fù)制數(shù)據(jù),cmp函數(shù)用于比較2個(gè)對象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
def newCopyData():
 return cmp(currentData,str(getCopyText()))

主程序

if __name__ == '__main__':
 req_url = 'http://fanyi.youdao.com/translate' # 創(chuàng)建連接接口,這里是有道詞典的借口
 # 創(chuàng)建要提交的數(shù)據(jù)
 currentData=str(getCopyText())
 Form_Date = {}
 Form_Date['doctype'] = 'json'
 while 1:
  if newCopyData():
   currentData=str(getCopyText())#取得當(dāng)前剪切板數(shù)據(jù)
   Form_Date['i'] = currentData # 傳遞數(shù)據(jù)
   data = urllib.urlencode(Form_Date).encode('utf-8') #數(shù)據(jù)轉(zhuǎn)換
   response = urllib.urlopen(req_url, data) #提交數(shù)據(jù)并解析
   html = response.read().decode('utf-8') #服務(wù)器返回結(jié)果讀取
   translate_results = json.loads(html) #以json格式載入
   translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式調(diào)取
   position=transMousePosition()#取得當(dāng)前鼠標(biāo)位置
   top = Tkinter.Tk()#窗口初始化
   top.wm_attributes('-topmost',1)#置頂窗口
   top.geometry(position)#指定定位生成指定大小窗口
   e=Tkinter.Text()#生成文本框部件
   e.insert(1.0,translate_results)#插入數(shù)據(jù)
   e.pack()#將部件打包進(jìn)窗口
   top.mainloop()# 進(jìn)入消息循環(huán)
  currentData=str(getCopyText())
  time.sleep(1)

到此,我們劃詞翻譯程序就已經(jīng)完成了,雖然不太美觀。而且美中不足的是我沒有想到一個(gè)好的辦法退出程序,相當(dāng)于一個(gè)死循環(huán)在里面,只有強(qiáng)行退出,不知道誰有好辦法能夠解決這個(gè)問題

總結(jié)

如果要實(shí)現(xiàn)什么功能,python該是最好的膠水了,c++的http庫實(shí)在是太坑了,浪費(fèi)我好多小時(shí)。下面源代碼附上,給大家參考

# -*- coding: utf-8 -*-
"""
Created on Sat Aug 11 08:24:48 2018

@author: ltengy
"""
import urllib #http連接需要用到
import json #解析網(wǎng)頁數(shù)據(jù)用
import win32clipboard as wc #讀取剪切板數(shù)據(jù)
from pymouse import PyMouse #獲得當(dāng)前鼠標(biāo)信息
import Tkinter   #自帶的GUI庫,生成文本框
import time   #定時(shí)器,減少占用
currentData=''

#PyMouse得到的是2維字符串,但是tkinter生成窗體時(shí)需要的是類似(100*100+x+y)的字符串,100*100是窗口大小,xy是坐標(biāo)點(diǎn)。
def transMousePosition():
 m = PyMouse()
 return "100x100+"+str(m.position()[0])+"+"+str(m.position()[1])
#獲得剪切板數(shù)據(jù) 
def getCopyText():
 wc.OpenClipboard()
 copy_text = wc.GetClipboardData()
 wc.CloseClipboard()
 return copy_text
#返會是否有新的復(fù)制數(shù)據(jù)
def newCopyData():
 return cmp(currentData,str(getCopyText()))
if __name__ == '__main__':
 req_url = 'http://fanyi.youdao.com/translate' # 創(chuàng)建連接接口,這里是有道詞典的借口
 # 創(chuàng)建要提交的數(shù)據(jù)
 currentData=str(getCopyText())
 Form_Date = {}
 Form_Date['doctype'] = 'json'
 while 1:
  if newCopyData():
   currentData=str(getCopyText())#取得當(dāng)前剪切板數(shù)據(jù)
   Form_Date['i'] = currentData # 傳遞數(shù)據(jù)
   data = urllib.urlencode(Form_Date).encode('utf-8') #數(shù)據(jù)轉(zhuǎn)換
   response = urllib.urlopen(req_url, data) #提交數(shù)據(jù)并解析
   html = response.read().decode('utf-8') #服務(wù)器返回結(jié)果讀取
   translate_results = json.loads(html) #以json格式載入
   translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式調(diào)取
   position=transMousePosition()#取得當(dāng)前鼠標(biāo)位置
   top = Tkinter.Tk()#窗口初始化
   top.wm_attributes('-topmost',1)#置頂窗口
   top.geometry(position)#指定定位生成指定大小窗口
   e=Tkinter.Text()#生成文本框部件
   e.insert(1.0,translate_results)#插入數(shù)據(jù)
   e.pack()#將部件打包進(jìn)窗口
   top.mainloop()# 進(jìn)入消息循環(huán)
  currentData=str(getCopyText())
  time.sleep(1)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python排序算法之選擇排序定義與用法示例

    Python排序算法之選擇排序定義與用法示例

    這篇文章主要介紹了Python排序算法之選擇排序定義與用法,簡單描述了選擇排序的功能、原理,并結(jié)合實(shí)例形式分析了Python定義與使用選擇排序的相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • 詳解Python 數(shù)據(jù)庫的Connection、Cursor兩大對象

    詳解Python 數(shù)據(jù)庫的Connection、Cursor兩大對象

    這篇文章主要介紹了Python 數(shù)據(jù)庫的Connection、Cursor兩大對象,文中通過python 數(shù)據(jù)庫圖解給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2018-06-06
  • python?Ajenti控制面板輕松地管理所有服務(wù)器網(wǎng)站

    python?Ajenti控制面板輕松地管理所有服務(wù)器網(wǎng)站

    Ajenti是一個(gè)值得擁有的管理面板,免費(fèi)開源的管理面板工具,可以幫助你集中管理多個(gè)服務(wù)器和網(wǎng)站,Ajenti?支持?Linux、BSD、Mac?OS?X和Windows?等多個(gè)操作系統(tǒng),并且可以通過一個(gè)直觀的?Web?界面來完成各種系統(tǒng)管理任務(wù)
    2024-01-01
  • Django restful framework生成API文檔過程詳解

    Django restful framework生成API文檔過程詳解

    這篇文章主要介紹了Django restful framework生成API文檔過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python數(shù)組條件過濾filter函數(shù)使用示例

    Python數(shù)組條件過濾filter函數(shù)使用示例

    數(shù)組條件過濾簡潔實(shí)現(xiàn)方式,使用filter函數(shù),實(shí)現(xiàn)一個(gè)條件判斷函數(shù)即可,示例代碼如下
    2014-07-07
  • Python常用的文件及文件路徑、目錄操作方法匯總介紹

    Python常用的文件及文件路徑、目錄操作方法匯總介紹

    這篇文章主要介紹了Python常用的文件及文件路徑、目錄操作方法匯總介紹,本文集合了最常用的一些文件和目錄操作函數(shù),并一一介紹它們的作用,需要的朋友可以參考下
    2015-05-05
  • Python 爬蟲多線程詳解及實(shí)例代碼

    Python 爬蟲多線程詳解及實(shí)例代碼

    這篇文章主要介紹了Python 爬蟲多線程詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Python 爬取淘寶商品信息欄目的實(shí)現(xiàn)

    Python 爬取淘寶商品信息欄目的實(shí)現(xiàn)

    這篇文章主要介紹了Python 爬取淘寶商品信息欄目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python程序打包成可執(zhí)行文件exe詳解流程

    Python程序打包成可執(zhí)行文件exe詳解流程

    你是否也有希望過寫一些自己所需要的工具程序來使用,可有不想或者沒時(shí)間精力學(xué)別的語言,本篇文章教你如何將用python語言寫的程序打包成可執(zhí)行的exe文件
    2021-11-11
  • Python?設(shè)計(jì)模式中命令模式

    Python?設(shè)計(jì)模式中命令模式

    這篇文章主要介紹了Python?設(shè)計(jì)模式中的命令模式,命令模式的目的是解耦調(diào)用操作的對象和提供實(shí)現(xiàn)的對象,下文介紹具有一定參考價(jià)值,需要的小伙伴可以參考一下
    2022-02-02

最新評論