web-dev-qa-db-ja.com

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)を見ました。しかし、そこでは何も役に立ちません(list_itemのラベル名を返すmy_list_item.text()メソッドをすでに使用している以外は)。前もって感謝します!

8
alphanumeric

QListWidget.currentRow を使用して、現在のアイテムのインデックスを取得します。

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

QListWidgetItem はそれ自身のインデックスを知りません:それを管理するのはリストウィジェット次第です。

currentItemChanged は現在および前のアイテムを引数として送信するため、次のように簡略化できることにも注意してください。

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

さて、私はあなたが現在のアイテムについて表示できるもののいくつかをリストしました、これ以上が必要な場合は、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)
2
thecreator232