8 votos

Cómo cerrar todas las tablas de atributos (o distintas) con PyQGIS

Tengo un QGIS (2.18.0) plugin que las actualizaciones de una combinación entre capa (espacial y no espacial de la capa).

QGIS se bloquea cuando se ejecute el plugin y la tabla de atributos de la unió de capa abierta. No es ningún accidente cuando la tabla de atributos es cerrado o una tabla de atributos de otra capa está abierto.

Los dos últimos comandos que el plugin se ejecuta son:

....
PUNKTE_OS.addJoin(joinObject)

PUNKTE_OS.triggerRepaint()
....

Si no hay otra solución, ¿cómo puedo cerrar la tabla de atributos de la unió capa antes de que la nueva unión se establece?

Lo sé, no es la showAttributeTable() método. Hay también un "closeAttributeTable()" método?

7voto

Mue Puntos 2469
  • Si tiene solo una tabla de atributos abierta:

     from PyQt4.QtGui import QApplication
    attrTables = [d for d in QApplication.instance().allWidgets() if d.objectName() == u'QgsAttributeTableDialog' or d.objectName() == u'AttributeTable']
    attrTables[0].close()
     

    • Si tiene varias tablas de atributos abiertas:

       from PyQt4.QtGui import QApplication
      attrTables = [d for d in QApplication.instance().allWidgets() if d.objectName() == u'QgsAttributeTableDialog' or d.objectName() == u'AttributeTable']
      for x in attrTables:
          x.close()
       

    • Si desea cerrar tabla (s) de atributos específicos :

       from PyQt4.QtGui import QApplication
      attrTables = [d for d in QApplication.instance().allWidgets() if d.objectName() == u'QgsAttributeTableDialog' or d.objectName() == u'AttributeTable' ]
      for x in attrTables:
          if 'PUNKTE' in x.windowTitle():
              x.close()
       

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X