加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

查单词的词典

发布时间:2020-12-17 17:27:51 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 # -*- coding: utf-8 -*from PyQt5.QtWidgets import *from PyQt5.QtCore import *import timeimport sysimport urllib.requestimport redef myformat

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

# -*- coding: utf-8 -*
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
import sys
import urllib.request
import re

def myformat(s):
    while s.find('<') != -1:
        i=s.find('<')
        j=s.find('>')
        s = s[:i]+s[j+1:]

    while s.find('&amp') != -1:
        i=s.find('&amp')
        s = s[:i]+s[i+4:]

    while s.find('&nbsp') != -1:
        i=s.find('&nbsp')
        s = s[:i]+s[i+5:]

    while s.find('&lt') != -1:
        s = s[:s.find('&lt')]+s[s.find('&lt')+len('&lt'):]

    return s

def translate(word):
    print(word)
    url = 'http://dict.baidu.com/s?wd=' + word
    print("url = " + url);
    response = urllib.request.urlopen(url)
    html = response.read().decode('utf-8')
    result = ""
    re_soundmark = re.compile('英.*?<b lang="EN-US" xml:lang="EN-US">(.*?)</b>')                                    
    soundmark = re_soundmark.findall(html)
    print(soundmark)
    if not soundmark:
        result += word + 'n'
    else:
        result += word + 'n英:' + soundmark[0]

    re_soundmark = re.compile('美.*?<b lang="EN-US" xml:lang="EN-US">(.*?)</b>')                                    
    soundmark = re_soundmark.findall(html)
    if not soundmark:
        result += ' '.join(word) +'n'
    else:
        result += "  美:" + soundmark[0] + 'n'

    re_colines = re.compile('<span class="collins-cnmeans">(.*?)</span><span>(.*?)</span>')
    colines = re_colines.findall(html)
    for k,v in colines:
        result += k+'n'
        result += myformat(v) + 'n'

    re_meaning = re.compile('<p><strong>(.*?)</strong><span>(.*?)</span></p>')
    meanings = re_meaning.findall(html)

    for k,v in meanings:
        result += myformat(k) + myformat(v) +'n'
 
    re_statement = re.compile('<li><p>(.*?)</p><p>(.*?)</p></li>')
    statements = re_statement.findall(html)
    i=0
    for k,v in statements:
        if i >= 5:
            break
        result += myformat(k)+myformat(v)+'n'
        i=i+1

    return result 


class WorkThread(QThread):
    trigger = pyqtSignal(str)
    def __init__(self):
        super(WorkThread,self).__init__()
        self.word = "" 

    def SetWord(self,Word):
        self.word = Word

    def run(self):
        print("runn")
        print("world = {0}".format(self.word))
        result = translate(self.word)
        self.trigger.emit(result)

class MyWindow(QWidget):
    
    def __init__(self):
        super(MyWindow,self).__init__()
        self.TextEdit = QTextEdit()
        self.TextEdit.setFixedHeight(30)
        self.button1 = QPushButton("One")
        self.button2 = QPushButton("Search")
        self.label1 = QLabel()

        self.layout = QGridLayout()
        self.layout.addWidget(self.TextEdit)
        self.layout.addWidget(self.button1)
        self.layout.addWidget(self.button2)
        self.layout.addWidget(self.label1)
        self.setLayout(self.layout)
        self.resize(200,200)
        self.button1.clicked.connect(self.ButtonCallBack)
        self.button2.clicked.connect(self.StartWorkInAThread)
        self.w = WorkThread()
        self.w.trigger.connect(self.Stop)

    def ButtonCallBack(self,e):
        print(e)
        print(type(self))
        print(self.sender().text())

    def StartWorkInAThread(self,e):
        text = self.TextEdit.toPlainText()
        self.w.SetWord(text)
        self.w.start()
        print("start workn")        

    def Stop(self,text):
        print("stopn")
        print(text)
        print(self.sender().isFinished())
        self.label1.setText(text)
              
if __name__=='__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读