PYQT 目录对话框打开两次

PYQT directory dialog opens twice

我有一个通过按钮获取目录的功能。每当我想使用通过其他功能检索到的目录时,它都会再次出现打开的对话框。任何解决这个问题的方法。我创建了另一个函数来调用,希望可以避免它,但仍然无法正常工作。这是我正在尝试的..

def selectFilecsvtoxml(self):


    directory = QtGui.QFileDialog.getExistingDirectory(self, caption="Pick a folder", directory=QtCore.QDir.currentPath())


    print directory + " this si dirrrrectory"
    self.listDirPath.setText(directory)

    for file_name in os.listdir(directory):
        if not file_name.startswith("."):

            print (file_name) +  "   this is selectFilcestoxml"

    return directory


def showDirectory(self):
    showDir = self.selectFilecsvtoxml
    dir = str(showDir)
    print showDir + " this is the files from this class which makes dumbpop"
    print dir + "  this might fix it"
    return dir

您创建了一个显示对话框和 returns 用户选择的目录的函数。该函数的目的是询问用户一些你不知道的东西,这里是一个文件夹的路径。
一旦知道了目录,就没有必要再次询问用户:你不应该多次调用这个函数。

相反,您应该存储用户给您的值。这是一个简单的例子:

class myWidget(QtGui.QWidget):
    def __init__(self,parent=None):
        ...
        self.directory=None
        self.button=QtGui.QPushButton("choose a folder")
        self.button.clicked.connect(self.select)

   def select(self):
       self.directory=QtGui.QFileDialog...

   def do_stuff_with_directory(self):
       print(self.directory)

一开始,self.directory是None,因为你不知道它应该是什么。当用户单击 "chose a folder" 按钮时,self.directory 将设置为他们的选择。
由于它是 MyWidget 的一个属性,您可以在它的任何方法中使用它。你应该在使用它之前检查它不是 None。


我看到你写了self.listDirPath.setText(directory)
因此,另一种在任何函数中获取所选目录的方法是:

directory=self.listDirPath.text()