我尝试使插件打开,读取然后以不同的格式保存,我打开.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 )
答案 0 :(得分:0)
您正尝试使用变量nmfile
作为实例变量,方法是self.nmfile
。但是,此变量/属性从未初始化(比较:AttributeError:'latihDialog'对象没有属性'nmfile')。
您在isiDataFile中的本地上下文中使用该变量,但只要此方法结束,局部变量就会丢失,无法再访问。
您必须设计代码的流程,它将
_save
- 方法之前分配此实例变量(例如self.nmfile = '/tmp/myfile'
)nmfile
传递给_save
- 方法,以便在那里可用