欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一、使用邏輯

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

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

二、需要引用的庫

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

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

三、代碼實現(xiàn)

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

#PyMouse得到的是2維字符串,但是tkinter生成窗體時需要的是類似(100*100+x+y)的字符串,100*100是窗口大小,xy是坐標點。
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
#返會是否有新的復制數(shù)據(jù),cmp函數(shù)用于比較2個對象,如果 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())#取得當前剪切板數(shù)據(jù)
   Form_Date['i'] = currentData # 傳遞數(shù)據(jù)
   data = urllib.urlencode(Form_Date).encode('utf-8') #數(shù)據(jù)轉換
   response = urllib.urlopen(req_url, data) #提交數(shù)據(jù)并解析
   html = response.read().decode('utf-8') #服務器返回結果讀取
   translate_results = json.loads(html) #以json格式載入
   translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式調取
   position=transMousePosition()#取得當前鼠標位置
   top = Tkinter.Tk()#窗口初始化
   top.wm_attributes('-topmost',1)#置頂窗口
   top.geometry(position)#指定定位生成指定大小窗口
   e=Tkinter.Text()#生成文本框部件
   e.insert(1.0,translate_results)#插入數(shù)據(jù)
   e.pack()#將部件打包進窗口
   top.mainloop()# 進入消息循環(huán)
  currentData=str(getCopyText())
  time.sleep(1)

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

總結

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

# -*- 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 #獲得當前鼠標信息
import Tkinter   #自帶的GUI庫,生成文本框
import time   #定時器,減少占用
currentData=''

#PyMouse得到的是2維字符串,但是tkinter生成窗體時需要的是類似(100*100+x+y)的字符串,100*100是窗口大小,xy是坐標點。
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
#返會是否有新的復制數(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())#取得當前剪切板數(shù)據(jù)
   Form_Date['i'] = currentData # 傳遞數(shù)據(jù)
   data = urllib.urlencode(Form_Date).encode('utf-8') #數(shù)據(jù)轉換
   response = urllib.urlopen(req_url, data) #提交數(shù)據(jù)并解析
   html = response.read().decode('utf-8') #服務器返回結果讀取
   translate_results = json.loads(html) #以json格式載入
   translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式調取
   position=transMousePosition()#取得當前鼠標位置
   top = Tkinter.Tk()#窗口初始化
   top.wm_attributes('-topmost',1)#置頂窗口
   top.geometry(position)#指定定位生成指定大小窗口
   e=Tkinter.Text()#生成文本框部件
   e.insert(1.0,translate_results)#插入數(shù)據(jù)
   e.pack()#將部件打包進窗口
   top.mainloop()# 進入消息循環(huán)
  currentData=str(getCopyText())
  time.sleep(1)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    Python 爬蟲多線程詳解及實例代碼

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

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

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

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

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

    Python?設計模式中命令模式

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

最新評論