如何从QtGui.QListWidget获取当前项目的信息?

alp*_*ric 8 python listview pyqt listviewitem

创建了一个QtGui.QListWidget列表小部件:

myListWidget = QtGui.QListWidget()
Run Code Online (Sandbox Code Playgroud)

使用QListWidgetItem列表项填充此ListWidget:

for word in ['cat', 'dog', 'bird']:
    list_item = QtGui.QListWidgetItem(word, myListWidget)
Run Code Online (Sandbox Code Playgroud)

现在连接list_item左键的函数:

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


myListWidget.currentItemChanged.connect(print_info)
Run Code Online (Sandbox Code Playgroud)

从我的代码中可以看出,左键单击的所有内容都是list_item的标签名称.但除了标签名称,我想获得list_item的索引号(ListWidget中显示的订单号).我想尽可能多地获取左键单击list_item的信息.我看了dir(my_list_item).但是我没有任何有用的东西(除了已经使用的my_list_item.text()方法,它返回一个list_item的标签名称).提前致谢!

ekh*_*oro 18

使用QListWidget.currentRow获取当前项的索引:

def print_info():
    print myListWidget.currentRow()
    print myListWidget.currentItem().text()
Run Code Online (Sandbox Code Playgroud)

一个QListWidgetItem不知道自己的索引:它是由列表窗口小部件来管理.

您还应该注意,currentItemChanged将当前和前一个项目作为参数发送,因此您可以简化为:

def print_info(current, previous):
    print myListWidget.currentRow()
    print current.text()
    print current.isSelected()
    ...
Run Code Online (Sandbox Code Playgroud)