【问题标题】:Write and Save As with python in plugin QGIS在插件 QGIS 中使用 python 编写和另存为
【发布时间】:2015-11-10 01:46:56
【问题描述】:

我尝试在 QGIS 中制作插件,我想制作另存为按钮,但我收到这样的错误消息

Traceback (most recent call last):
  File "C:\Users\Mr.Pakde/.qgis2/python/plugins\latih\latihdialog.py", line 69, in 

saveAs
    if not filename.isEmpty():
AttributeError: 'unicode' object has no attribute 'isEmpty'

我的代码是这样写的:

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, filename):        
    f = open( filename, "w" )
        f.write( "%s" % self.lineFile.text() )
f.close()
def savefile(self):
     if self.filename:
          self._save( "%s" % self.filename )
else:
          self.saveAs()

def saveAs(self):
        filename = QtGui.QFileDialog(self).getSaveFileName()
        if not filename.isEmpty():
            _filename = "%s" % filename
            self._save( _filename )
            self.setFilename( _filename )

我尝试以不同的格式保存文件

【问题讨论】:

    标签: python qgis


    【解决方案1】:

    错误消息准确地告诉你问题是什么:

       filename = QtGui.QFileDialog(self).getSaveFileName()
        if not filename.isEmpty():
    

    filename 是一个 unicode 对象,它没有 isEmpty() 方法。试试:

     if filename != "":
    

    或者,如empty strings are False-y

    if filename:
    

    【讨论】:

    • 问题是 python API 从 QGIS 1.8 更改为 2.0。字符串不再表示为 QString 对象,而是正确的 python unicode 对象。另一种方法是if not filename:
    • 对不起,我回复晚了,但是当我更改代码时,我得到了另一个错误,它说:[>File "C:\Users\Mr.Pakde/.qgis2/python/plugins\latih \latihdialog.py”,第 71 行,在 saveAs self._save(_filename) 文件“C:\Users\Mr.Pakde/.qgis2/python/plugins\latih\latihdialog.py”,第 59 行,在 _save f.write ( "%s" % self.nmfile.text() ) AttributeError: 'latihDialog' 对象没有属性 'nmfile'
    • 不,我认为那是因为'latihDialog' object has no attribute 'nmfile'阅读您的错误消息。我不知道latihDialog 有什么属性;这是你自己的自定义类吗?
    • 不是 QGIS 插件中的对话框,我的插件名为“latih”
    • 那我建议你再开一个问题,包括与latihDialog相关的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 2022-10-14
    • 2015-10-22
    • 1970-01-01
    • 2016-03-20
    • 2014-05-23
    相关资源
    最近更新 更多