以下代码应执行:
class DownloadThread(QtCore.QThread): data_downloaded = QtCore.pyqtSignal(object) def run(self): self.data_downloaded.emit('Connecting...') ftp = FTP('example.com') ftp.login(user='user', passwd='password') ftp.cwd('/main_directory/') self.data_downloaded.emit('Downloading...') filename = 'testfile.bin' with open(filename, 'wb') as localfile: ftp.retrbinary('RETR ' + filename, localfile.write) ftp.quit() self.data_downloaded.emit('Done')class MainWindow(QtGui.QWidget): def __init__(self): super(MainWindow, self).__init__() self.label = QtGui.QLabel self.button = QtGui.QPushButton("Start") self.button.clicked.connect(self.start_download) layout = QtGui.QVBoxLayout() layout.addWidget(self.button) layout.addWidget(self.label) self.setLayout(layout) def start_download(self): self.thread = DownloadThread() self.thread.data_downloaded.connect(self.on_data_ready) self.thread.start() def on_data_ready(self, data): self.label.setText(unipre(data))基于: 更新多线程PyQT中的GUI元素。
您的后续问题:
从另一个运行FTP下载的线程更新PyQt进度



