我的生成器代码
def search(query):
dir_path = os.path.realpath("C:/")
for root, dirs, files in os.walk(dir_path):
for file in files:
if query.lower() in str(file).lower():
yield (root, file)
for directory in dirs:
if query.lower() in str(directory).lower():
yield (root, directory)
我希望能够获取结果,显示结果并同时运行我的应用程序。
当我这样做时,它将挂起程序,直到循环结束,然后显示结果
def pushButtonFunc():
text = self.LocalSearchBar.text()
newWindow = QtWidgets.QDialog(ProjectOSP)
newWindow.resize(1201, 861)
listWidget = QtWidgets.QListWidget(newWindow)
for root, file in search(text):
ite = QtWidgets.QListWidgetItem(file)
listWidget.addItem(ite)```
可能的解决方法:
QApplication.processEvents()
。这会在mainloop上循环一次,并且可以在同一线程中的任何位置调用。后两者中哪一个最好,很大程度上取决于您的应用,您的特定用例以及比此处方便链接更多的代码。只有您可以拨打电话。