отображать QMessageBox PyQt, когда выбран другой элемент combobox / list box

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

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть поле со списком cbLayer и функция do_stuff следующего вида:

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

Как я могу получить QMessageBox всплывать всякий раз, когда выбирается другой элемент в следующей форме:

QMessageBox.warning(self, "items: ", do_stuff(cb_selected_item))
Это было полезно?

Решение

Напишите метод или функцию, содержащую этот код, и присоедините его к сигналу полей со списком 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))

Я этого не пробовал, но это должно помочь вам начать.В противном случае взгляните на примеры PyQt.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top