(Windows 7 64位、PyCharm 3.4.1 Pro、Python 3.4.0、PySide 1.2.2)
我想制作一个带有过滤器的文件对话框并预选一个过滤器。
如果我使用静态方法,它可以工作,我可以使用过滤器和预选一个过滤器。
dir = self.sourceDir
filters = "Text files (*.txt);;Images (*.png *.xpm *.jpg)"
selected_filter = "Images (*.png *.xpm *.jpg)"
fileObj = QFileDialog.getOpenFileName(self, " File dialog ", dir, filters, selected_filter)
如果我使用一个对象它不工作,我的过滤器不在那里。
file_dialog = QFileDialog(self)
file_dialog.setNameFilters("Text files (*.txt);;Images (*.png *.jpg)")
file_dialog.selectNameFilter("Images (*.png *.jpg)")
file_dialog.getOpenFileName()
为什么这不起作用?
全球解决方案就在这里。您可以获取目录、文件名和文件扩展名。你可以使用它:
上课了!
你误解了
QFileDialog
的工作原理。函数
getOpenFileName
、getSaveFileName
等是静态的。它们创建一个内部文件对话框对象,函数的参数用于设置其属性。但是当您使用
QFileDialog
构造函数时,它会创建一个外部实例,因此对其设置属性对静态函数创建的内部文件对话框对象没有影响。您需要做的是显示您创建的外部实例:
相关问题 更多 >
编程相关推荐