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