gpt4 book ai didi

python - PyQt QFileDialog exec_ 很慢

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:06 25 4
gpt4 key购买 nike

我正在使用自定义 QFileDialog 因为我想选择多个目录。但是 exec_ 函数很慢,我不明白为什么。我使用的是最新版本的 PyQt。

代码片段:

from PyQt4 import QtGui, QtCore, QtNetwork, uic

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
uic.loadUi('gui.ui', self)
self.connect(self.multiPackerAddDirsBtn,
QtCore.SIGNAL('clicked()'), self.multiPackerAddDirs)

def multiPackerAddDirs(self):
dialog = QtGui.QFileDialog(self)
dialog.setFileMode(QtGui.QFileDialog.Directory)
dialog.setOption(QtGui.QFileDialog.ShowDirsOnly, True)
dialogTreeView = dialog.findChild(QtGui.QTreeView)
dialogTreeView.setSelectionMode(
QtGui.QAbstractItemView.ExtendedSelection)
if dialog.exec_():
for dirname in dialog.selectedFiles():
self.multiPackerDirList.addItem(str(dirname))
print(str(dirname))

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()

最佳答案

QFileDialog 构造函数创建一个 Qt 对话框,而静态函数(如 getSaveFileName)将创建一个本地对话框(除非 DontUseNativeDialog 选项设置为 正确).

本地对话框可能比 Qt 的更快或更慢,这取决于所使用的平台。

不过,对于某些平台,问题似乎更为严重。参见 this longstanding bug ,它会影响带有 Qt 4.7/4.8 的 Windows XP 和 Windows 7(以及其他)。

更新

明确一点:

在 Windows 上,静态函数 QFileDialog.getExistingDirectory打开 native “浏览文件夹”对话框,该对话框仅允许选择一个目录。所以 Qt 无法提供用于选择多个目录的 native 对话框,因为 Windows 没有提供。

另一个主要的替代方法是使用 Qt 自己的非本地文件对话框,并按照 this faq 中的建议对其进行猴子修补。 .但是,正如您已经发现的那样,由于底层实现中的错误,这目前有一个令人讨厌的缓慢的缺点。

剩下的唯一选择是要么编写您自己的目录列表对话框,要么尝试想出另一种方法来解决您眼前的问题(即不使用文件对话框)。

关于python - PyQt QFileDialog exec_ 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13459294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com