另存为错误'X'对象在QGIS插件中没有属性'Y'

时间:2013-12-27 03:15:23

标签: python qgis

我尝试使插件打开,读取然后以不同的格式保存,我打开.xml文件并尝试以文本或pdf格式保存为/写入,但我收到如下错误消息:

File "C:\Users\Mr.Pakde/.qgis2/python/plugins\latih\latihdialog.py", line 71, in saveAs
    self._save( _filename )
  File "C:\Users\Mr.Pakde/.qgis2/python/plugins\latih\latihdialog.py", line 59, in _save
    f.write( "%s" % self.nmfile.text() )
AttributeError: 'latihDialog' object has no attribute 'nmfile'

这是我的代码

cariButton = self.ui.btnCari
        QtCore.QObject.connect(cariButton, QtCore.SIGNAL('clicked()'),self.cari)
        saveButton = self.ui.btnSave
        QtCore.QObject.connect(saveButton, QtCore.SIGNAL('clicked()'),self.saveAs)

    def cari(self, event=None):

        #open dialog
        filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '*.xml')

        self.ui.lineFile.setText(filename)

        #panggil isi data
        self.isiDataFile(filename)

    def isiDataFile(self, nmfile):
        #buka dengan open mode baca
        teksFile = open(nmfile, 'r').read()

        self.ui.textFile.setText(teksFile)


    def _save(self, simpan):        
        f = open( simpan, "w" )
        f.write( "%s" % self.nmfile.text() )
        f.close()
    def savefile(self):
        if self.simpan:
              self._save( "%s" % self.simpan )
        else:
              self.saveAs()

    def saveAs(self):
            tulis = QtGui.QFileDialog(self).getSaveFileName()
            if tulis !="":
                _filename = "%s" % tulis
                self._save( _filename )
                self.setFilename( _filename )

1 个答案:

答案 0 :(得分:0)

您正尝试使用变量nmfile作为实例变量,方法是self.nmfile。但是,此变量/属性从未初始化(比较:AttributeError:'latihDialog'对象没有属性'nmfile')。

您在isiDataFile中的本地上下文中使用该变量,但只要此方法结束,局部变量就会丢失,无法再访问。

您必须设计代码的流程,它将

  • 在调用_save - 方法之前分配此实例变量(例如self.nmfile = '/tmp/myfile'
  • 将参数nmfile传递给_save - 方法,以便在那里可用