请选择 进入手机版 | 继续访问电脑版

pyqt5 写的 复制翻译器 选中单词复制之后翻译就会出来

[复制链接]
命中不缺你 发表于 2021-1-3 12:03:29 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
pyqt5 写的 复制翻译器

苦逼于逐日看英文文章许多单词不会,然后用有道辞书划词翻译感觉总是失灵,自己手写一个基于pyqt5的复制翻译器,可以选择翻译框显示出来的时间是非,选中单词复制然后效果就会弹出来,效果展示见B站


  苦逼于看英文要查单词,写了一个可以选择翻译框现实时间的,可以大概托盘化的复制翻译器,选中内容复制(用鼠标大概ctrl c都可以)然后翻译框跟随现实的应用,pyqt5

原理就是用pyqt5读取粘贴板,然后向金山词霸发送post,然后用beautifulsoup扒开界面上效果所在的标签,然后跟随鼠标位置显示一个Qwidget,输出到QTextBrowser中,父窗口用QTimer限制子窗口的hide和show时间
beautifulsoup提取翻译
  1.     def get(self, word_str):        self.word = Word()        self.word.text = word_str        r = self.s.get("http://www.iciba.com/%s" % word_str)        soup = BeautifulSoup(r.content, "lxml")        temp_results = soup.find_all("div", class_="FoldBox_fold__1GZ_2")        if not temp_results:            return True        base = temp_results[0]        #print(base)        # 获取根本词义        temp_results = base.find_all('ul', class_='Mean_part__1RA2V')        if temp_results:            #print(temp_results)            temp = temp_results[0]            for node in temp:                if len(node.contents) != 2:                    self.word.props[''] = node.text                else:                    temp_prop = node.contents[0].text                    #print(temp_prop)                    temp_str = node.contents[1].text                    self.word.props[temp_prop] = temp_str        # 获取句子翻译        temp_results_sentence = base.find_all(class_='Mean_trans__166Ns')        if temp_results_sentence:            base=temp_results_sentence[0]            temp_p=base.find_all('p')            #print(temp_p[0].text)            self.word.props['']=temp_p[0].text
复制代码
更新Qwidget
  1. # 设置位置和巨细        self.setFixedSize(self.width, self.height)        cur = QtGui.QCursor.pos()        self.x = cur.x() -self.baseB        self.y = cur.y() -self.baseB        # 如果超出了屏幕界限,便显示在内里        window_h = QDesktopWidget().screenGeometry().height()        window_w = QDesktopWidget().screenGeometry().width()        if self.x + self.width > window_w :            self.x=window_w-self.width        if self.y + self.height > window_h:            self.y=window_h-self.height        if self.x + self.height > window_h and self.y + self.width > window_w:            # self.x -= self.baseB + self.width            # self.y -= self.baseB + self.height            self.x=window_w-self.width            self.y=window_h-self.height        self.move(self.x, self.y)        self.show()        if self.timerStart==True:            print(self.baseTime*1000)            #计时自动关闭窗口            self.timer.timeout.connect(self.hide)  # 每次计时到时间时发出信号            self.timer.start(self.baseTime*1000)  # 设置计时隔断并启动;单位毫秒        base_info = ''        for x in self.translater.word.props:            base_info += x + self.translater.word.props[x] + '\n\n'        #print(base_info)        if base_info is '':            self.text_browser.append("翻译:" + '\n\n' + "无效果")        else:            self.text_browser.append("翻译:"+'\n\n'+base_info)
复制代码
来源:https://blog.csdn.net/LZJSTUDY/article/details/112058546
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )