2 votos

Conexión de ComboBox y pushButton para el plugin de QGIS

Estoy creando un plugin para QGIS. He añadido un cuadro combinado y un botón pulsador en el plugin. El problema al que me enfrento es que quiero que el ComboBox permita la selección de capas desde las capas cargadas en el proyecto o que cuando el usuario haga clic en el pushButton navegue al directorio y el ComboBox se llene con la capa seleccionada desde el pushButton. Ambos funcionan individualmente, pero no consigo que funcionen juntos. Soy un principiante en Python, así que por favor hágame saber si hay algo muy obvio que me he perdido. Estoy dando mi código de abajo. Cuando lo ejecuto me sale el error -

TypeError: la señal nativa de Qt no se puede llamar

def select_input_raster(self):
  filename, _filter = QFileDialog.getOpenFileName(
    self.dlg, "Select input raster ","", '*.tif')
  self.dlg.comboBox.currentTextChanged(filename)

def run(self):

    if self.first_start == True:
        self.first_start = False
        self.dlg = ComboBoxPushButtonDialog()
        self.dlg.pushButton.clicked.connect(self.select_input_raster)

    layerlist1 = ['<Select a raster layer>']
    layers1 = QgsProject.instance().mapLayers().values()
    for layer in layers1:
        if layer.type() == QgsMapLayer.RasterLayer:
            layerlist1.append(layer.name())

        #else layerlist1.append(select_input_raster())

    #Clear the contents of the comboBox from previous runs
    self.dlg.comboBox.clear()
    # Populate the comboBox with names of all the loaded raster layers
    self.dlg.comboBox.addItems(layerlist1)
    # show the dialog
    self.dlg.show()
    # Run the dialog event loop
    result = self.dlg.exec_()

2voto

Mue Puntos 2469

currentTextChanged() es una señal que debe conectarse a una función. Por ejemplo

self.dlg.comboBox.currentTextChanged.connect(self.some_function)

Creo que lo que quieres es algo así:

def select_input_raster(self):
    filename, _filter = QFileDialog.getOpenFileName(
      self.dlg, "Select input raster ","", '*.tif')
    # Add the selected filename to combobox
    self.dlg.comboBox.addItem(filename)
    # Obtain index of newly-added item
    index = self.dlg.comboBox.findText(filename)
    # Set the combobox to select the new item
    self.dlg.comboBox.setCurrentIndex(index)

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