作者eaden (evenrain)
看板Python
标题Re: [问题] QThread: Destroyed while thread is sti
时间Thu Jun 21 18:28:21 2012
※ 引述《eaden (evenrain)》之铭言:
: 大家好,我是个 python 新手~所以万一我问的问题太笨,请鞭小力一点 T_T
: 目前是做登入的功能,但是偷懒不想自己维护帐号密码,
: 但是程式也会需要用到 FTPS,所以就做个登入视窗使用者抓 windows 的帐号
: 密码让 user 自己输入,再藉由是否成功连线来判定登入与否
: main.py 是主程式宣告了 DialogLogin(QDialog)
: 跟 MainWindow(QMainWindow) 两个 UI 物件,一开始只会显示 Dialog
: 使用者填写密码後按确定 会呼叫 login 函式
: 里头会执行 FtpsQThread 这个 QThread 连线 ftp
: 再依据结果决定显示 QMessageBox 或是切换到 MainWindows
: 不过执行结果却是 QThread: Destroyed while thread is still running
: 有朋友跟我说大概是生命周期的问题,不过我不确定我哪里错了
: 请大家帮我看看~ m(_ _)m
: 程式码: https://dl.dropbox.com/u/1245969/src.7z
自己回自己..
我刚刚乱试把原先的
def login(thread):
thread = FtpsQThread(uname, pwd)
thread.dataReady.connect(get_login, Qt.QueuedConnection)
thread.start()
if __name__ == '__main__':
dl = DialogLogin()
dl.ui.buttonBox.accepted.connect(login)
改成
def login(thread):
thread.start()
if __name__ == '__main__':
dl = DialogLogin()
thread = FtpsQThread(uname, pwd)
thread.dataReady.connect(get_login, Qt.QueuedConnection)
dl.ui.buttonBox.accepted.connect(login)
这样就好了 @@
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.190.212
1F:→ legnaleurc:不要继承 QThread ... 06/21 21:08
2F:→ eaden:有甚麽原因不建议继承 QThread 吗 @@? 06/22 13:36
3F:→ eaden:原来是因为 qthread 是一个 concrete class 了... 06/22 14:44