0

因此,我希望我的 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()

错误消息:

Traceback(最近一次调用最后一次):文件“qDis.py”,第 80 行,在 loadFile 文件名 [“currentQ”]=selFile NameError:未定义全局名称“文件名”

4

1 回答 1

0

在您的loadFile方法中,您正在寻找fileName未在您的函数或模块的其余部分中定义的 loval 变量,因此NameError.

很可能,您打算使用self.fileName您之前定义的类属性。

同样的评论和建议适用于您的其他方法goForth

作为旁注:你真的需要fileName成为一个类属性吗?它不能只是您在__init__方法中定义的实例属性吗?

于 2012-08-27T20:42:30.927 回答