大家好。我正在Windows7上使用PyQt5制作一个桌面GUI应用程序。你知道吗
在我的应用程序中,工作量很大。如果文件哈希码与ftps文件不相等,它将对指定目录中的所有文件生成哈希码,并从ftp下载。在我的系统中,这大约需要5-6分钟。你知道吗
在我看来。。。你知道吗
先显示小部件。(当然,这是自我表现()'在比较哈希的代码之前。)
比较哈希代码并下载文件。
代码正常工作,但小部件在2.
结束后显示。这是个问题。
我希望我的应用程序先运行步骤1,然后再运行步骤2。我该怎么办?你知道吗
任何帮助都是非常感激的
代码:
class showUI(QWidget):
# make menu, toolbar, buttons, etc..
self.show()
class compareHashAndDownload:
# compare hash and download the files.
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = showUI()
mainProcess = compareHashAndDownload()
sys.exit(app.exec_())
解决这个问题的最佳方法是在单独的
QThread
中运行compareHashAndDownload
。这还允许与小部件进行交互,甚至在长时间运行的函数完成之前。您还可以稍后重新运行该函数,而不必在此期间挂断GUI。你知道吗使用线程相当复杂。例如,您需要安排GUI操作,以便它们在执行
compareHashAndDownload
函数之前、期间或之后被调用时能够正确运行。你知道吗这里有一些很好的例子here,如果你决定沿着这条路走下去,它们会对你有所帮助。你知道吗
然而,一个廉价而令人愉快的选择是展示一个闪屏 执行
compareHashAndDownload
时。下面是一个简单的例子:您可以直接从
showUI
小部件本身调用compareHashAndDownload
。 但是如果compare方法花费的时间太长,那么ui将等待它完成,这不是一个好方法经验。所以呢记住这一点。你知道吗这个方法不会花那么长时间,如果用qt自己的
QThread
在单独的线程上运行这个方法(不是最优雅的解决方案,但可以很好地运行)。你知道吗相关问题 更多 >
编程相关推荐