Как получить текущий элемент информации от QtGui пакет.QListWidget?

создал QtGui пакет.Виджет списка QListWidget:

myListWidget = QtGui.QListWidget()

населил этот ListWidget элементами списка QListWidgetItem:

for word in ['cat', 'dog', 'bird']:
    list_item = QtGui.QListWidgetItem(word, myListWidget)

Теперь подключите функцию на левой кнопкой мыши list_item:

def print_info():
    print myListWidget.currentItem().text()


myListWidget.currentItemChanged.connect(print_info)

как вы видите из моего кода, все, что я получаю при щелчке левой кнопкой мыши, это имя метки list_item. Но помимо имени метки я хотел бы получить номер индекса list_item (номер заказа, как он отображается в ListWidget). Я хотел бы получить как можно больше информации о слева-нажал list_item как можно. Я посмотрел на dir (my_list_item). Но я не могу ничего полезного там (кроме уже использованного my_list_item.метод text (), который возвращает имя метки list_item). Заранее спасибо!

2 ответов


использовать QListWidget.currentRow получить индекс текущего элемента:

def print_info():
    print myListWidget.currentRow()
    print myListWidget.currentItem().text()

A QListWidgetItem не знаю свой индекс в списке-виджет для управления.

вы также должны отметить, что currentItemChanged отправляет текущие и предыдущие элементы в качестве аргументов, поэтому вы можете упростить:

def print_info(current, previous):
    print myListWidget.currentRow()
    print current.text()
    print current.isSelected()
    ...

Ну, я перечислил некоторые из вещей, которые вы можете отобразить о текущем элементе, если вы хотите больше, чем это, то вы должны просмотреть документацию PyQt. ссылке

 def print_info():
    print myListWidget.currentItem().text()
    print myListWidget.row(myListWidget.currentItem())
    print myListWidget.checkState()  # if it is a checkable item
    print myListWidget.currentItem().toolTip().toString()
    print myListWidget.currentItem().whatsThis().toString()

myListWidget.currentItemChanged.connect(print_info)