所以我希望我的GUI窗口从用户收集数据,并在用户确认已做出选择后打开指定的文本文件。我创建了一个全局字典来存储用户输入的信息,但我不知道如何将这个字典发送到下一个函数调用。我一直在收到错误“全局名称'fileName'未定义”。请帮助!!
示例代码:
class guiFindFiles(QtGui.QWidget):
fileName = {}
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
#Create window
self.setFixedSize(400,180)
self.setWindowTitle("Choose the files to use")
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
...
#Connect all the signals and slots
self.connect(self.qFileButton, QtCore.SIGNAL("clicked()"), self.loadFile)
self.connect(self.lhButton, QtCore.SIGNAL("clicked()"), self.loadFile)
self.connect(self.oldQButton, QtCore.SIGNAL("clicked()"), self.loadFile)
self.connect(self.oldQCB, QtCore.SIGNAL("stateChanged(int)"), self.status)
self.connect(self.run, QtCore.SIGNAL("rejected()"),self.close)
self.connect(self.run, QtCore.SIGNAL("accepted()"),self.goForth)
def loadFile(self):
selFile = QtGui.QFileDialog.getOpenFileName()
if self.sender() == self.qFileButton:
fileName["currentQ"]=selFile
self.qFileTF.setText(selFile)
elif self.sender() == self.lhButton:
self.lhFileTF.setText(selFile)
fileName["currentLH"]=selFile
else:
self.oldQTF.setText(selFile)
fileName["oldQ"]=selFile
def goForth(self):
print fileName[0]
self.close()
错误消息:
追踪(最近一次通话): 在loadFile中输入第80行的“qDis.py” 文件名[ “currentQ”] = selFile NameError:未定义全局名称'fileName'
答案 0 :(得分:0)
在loadFile
方法中,您正在寻找fileName
,即一个loval变量,该变量未在您的函数或模块的其余部分中定义,因此NameError
。
很可能,您打算使用self.fileName
,即您之前定义的类属性。
同样的评论和建议适用于您的其他方法goForth
。
作为旁注:你真的需要fileName
成为一个类属性吗?它不能只是您在__init__
方法中定义的实例属性吗?