visualizzare un QMessageBox PyQT quando si seleziona un diverso elemento della casella combobox / lista

StackOverflow https://stackoverflow.com/questions/1312598

  •  19-09-2019
  •  | 
  •  

Domanda

Ho un cbLayer casella combinata e una funzione do_stuff della forma seguente:

def do_stuff(item_selected_from_cbLayer):
    new_list = []
    # do stuff based on item_selected_from_combobox and put the items in new_list
    return new_list

Come posso ottenere un QMessageBox a pop-up ogni volta che un elemento diverso è selezionato nella forma seguente:

QMessageBox.warning(self, "items: ", do_stuff(cb_selected_item))
È stato utile?

Soluzione

Scrivi un metodo o una funzione che contiene questo codice e allegarlo alle caselle combinate segnalare currentIndexChanged :

def __init__(self):
    ...
    QObject.connect(self.cbLayer, SIGNAL("currentIndexChanged(int)"), self.warn)

def warn(index):
    QMessageBox.warning(self, "items: ", do_stuff(cbLayer.itemData(index)) )

def do_stuff(self, item):
    QMessageBox.warning(self, str(item))

non ho provato questo ma dovrebbe iniziare. In caso contrario, dare un'occhiata agli esempi PyQt.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top