2016-10-11 240 views
1

我正在学习计算机科学的课程,无法计算出该代码片段不工作的原因。我尝试连接,我已经PyQt4中,这样,当它被按下它创建了一个按钮,显示目录对话:名称错误:未定义名称'QFileDialog'

self.Browse_Button_1 = QtGui.QToolButton(self.tab) 
    self.Browse_Button_1.setGeometry(QtCore.QRect(360, 30, 61, 20)) 
    self.Browse_Button_1.setObjectName(_fromUtf8("Browse_Button_1")) 
    file = str(QFileDialog.getExistingDirectory(self, "Select Directory")) 
    self.Browse_Button_1.clicked.connect(self, file) 

但是我每次运行程序时我刚得到这个错误:

Traceback (most recent call last): 
    File "D:\NEA Project\NEA_UI.py", line 194, in <module> 
    ui = Ui_Dialog() 
    File "D:\NEA Project\NEA_UI.py", line 30, in __init__ 
    self.setupUi(self) 
    File "D:\NEA Project\NEA_UI.py", line 55, in setupUi 
    file = str(QFileDialog.getExistingDirectory(self, "Select Directory")) 
NameError: name 'QFileDialog' is not defined 

任何有关问题的帮助将不胜感激。

回答

1

QFileDialog是在QtGui module,所以你需要追加,为您的生产线的开头,如:

file = str(QtGui.QFileDialog.getExistingDirectory(self, "Select Directory")) 

另外,如果你想使用QFileDialog没有前面的QtGui,你需要导入它从模块(在你的文件的顶部),具有:

from PyQt4.QtGui import QFileDialog 

或为QT5(注意,在QT5,QFileDialog移到QtWidgets模块):

from PyQt5.QtWidgets import QFileDialog 
+0

我试过你的解决方案,不幸的是它出现了以下错误。我正在使用学校电脑,所以它可能只是因为它缺少某种图书馆。 –

+0

'code'Traceback(最新最后调用): 文件 “d:\ NEA项目\ NEA_UI.py”,线路161,在 ui.setupUi(对话) 文件“d:\ NEA项目\ NEA_UI.py “,第49行,在setupUi file = str(QFileDialog.getExistingDirectory(self,”Select Directory“)) TypeError:QFileDialog.getExistingDirectory(QWidget parent = None,str caption ='',str directory ='',QFileDialog。文件“D:\ NEA Project \ NEA_UI.py”,第161行,在 ui.setupUi(选项选项= QFileDialog.ShowDirsOnly):参数1有意想不到的类型'Ui_Dialog' –

+0

'追溯(最近呼叫最后一个): 对话框) 文件“D:\ NEA Project \ NEA_UI.py”,第49行,在setupUi 文件中= str(QFileDialog.getExistingDirectory(self,“Select Directory”)) TypeError:QFileDialog.getExistingDirectory(QWidget parent = None,str caption ='',str directory ='',QFileDialog.Options options = QFileDialog.ShowDirsOnly):argument 1有意想不到的类型'Ui_Dialog'' –