2014-10-21 4 views
0

Я пишу приложение электронной почты. Когда я отправляю электронное письмо, мой основной поток GUI зависает даже, я создал отдельный поток для отправки электронной почты. Кажется, у меня есть пропущенная резьба?GUI зависает даже после использования Pygtk Threading

У меня есть функция GObject start_init() в начале основного потока. Мне не нужны threads_enter() и threads_leave(), потому что поток выполняет изменения в моем графическом интерфейсе.

Я знаю, что на резьбу много вопросов, но, будучи новичком, я не мог следовать за ними. Что я здесь делаю неправильно?

Класс для отправки Email

class EmailSendThread(Thread): 

    def __init__(this, email): 
    Thread.__init__(this) 
    this.email = email 


    def run(this): 
    this.email.send_email() 

На кнопку отправки Нажмите

def on_btn_Send_clicked(this, *args): 

    Ethread = EmailSendThread(this.application.email) 
    Ethread.setName('SendEmailThread') 

    Ethread.start() 
    Ethread.join() 

INIT Применение

GObject.threads_init() 
EasyMail = EasyMailApplication() 

Gtk.main() 

ответ

0

Thread.join делает основную программу до тех пор, пока поток не завершит выполнение. Если вы не хотите, чтобы основная программа сидела там, подождите, не звоните join.

+0

Но, если основная программа завершается до того, как будет отправлена ​​почта отправки? –

+0

Затем «присоединяйтесь» к потоку в качестве самой последней команды в программе. – Kevin

+0

Хорошо, позвольте мне попробовать! –

Смежные вопросы