小编ken*_*ura的帖子

Pyqt5 qthread +信号无效+ gui冻结

我正在尝试用imaplib 创建一个邮箱检查器,它与python,队列和多线程没有gui工作得很好.

但是当我试图把一个gui,我所做的每一个功能,让gui冻结直到完成.

我从各种d​​oc(添加qthread,signal,cursorr etcc)尝试了很多东西,而且没有一个教程对我有用.

有人可以帮助我理解如何在运行函数时设置或附加文本到QtextEdit,因为它只在完成后工作.

这是我的代码:

class Checker(QtCore.QThread):
    signal = QtCore.pyqtSignal(object)

    def __init__(self, lignesmailtocheck):
        QtCore.QThread.__init__(self)
        self.lignesmailtocheck = lignesmailtocheck

    def run(self):
            lignemailtocheck = self.lignesmailtocheck.strip()                        
            maillo, passo = lignemailtocheck.split(":",1)
            debmail, finmail = maillo.split("@",1)
            setimap =["oultook.com:imap-mail.outlook.com", "gmail.com:imap.gmail.com"]
            for lignesimaptocheck in sorted(setimap):
                    ligneimaptocheck = lignesimaptocheck.strip()
                    fai, imap = ligneimaptocheck.split(":",1)                                
                    if finmail == fai:
                            passo0 = passo.rstrip()
                            try :
                                    mail = imaplib.IMAP4_SSL(imap)
                                    mail.login(maillo, passo)
                                    mailboxok = open("MailBoxOk.txt", "a+", encoding='utf-8', errors='ignore')
                                    mailboxok.write(maillo+":"+passo+"\n")
                                    mailboxok.close()
                                    totaly = maillo+":"+passo0+":"+imap                                
                                    print(maillo+":"+passo+"\n")

                                    self.send_text.emit(totaly)
                                    time.sleep(1)
                            except imaplib.IMAP4.error:                          
                                           print ("LOGIN …
Run Code Online (Sandbox Code Playgroud)

python pyqt python-multithreading pyqt5

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

pyqt ×1

pyqt5 ×1

python ×1

python-multithreading ×1