当使用PyQt5编写GUI界面时,QListWidget是一个非常常用的控件,它可以在窗口中显示一个可滚动的列表,每一行都是一个item条目。在使用QListWidget时,经常需要知道用户当前选择的行位置,本文将详细介绍如何获取当前选择的行。
创建一个QListWidget控件
首先需要在PyQt5中创建一个QListWidget控件,可以通过调用QListWidget构造函数实现。以下是一个简单的示例代码:
from PyQt5.QtWidgets import QApplication, QListWidget, QWidget, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
list_widget = QListWidget()
list_widget.addItems(['item1', 'item2', 'item3'])
layout.addWidget(list_widget)
window.setLayout(layout)
window.show()
app.exec_()
运行上述代码后,应该能看到一个窗口,其中包含了一个QListWidget控件,其中三个item分别是"item1", "item2", "item3"。
获取当前选择的行
获取当前选择的行有两种方法:
方法一:使用currentRow()方法
可以使用QListWidget的currentRow()方法获取当前选择的行。该方法返回当前选择的行号,行号从0开始。
row = list_widget.currentRow()
print("当前选择的行是:", row)
方法二:使用selectedItems()方法
可以使用QListWidget的selectedItems()方法获取当前选择的行。该方法返回一个列表,其中包含当前所有被选择的item条目。
selected_items = list_widget.selectedItems()
for item in selected_items:
print(item.text())
上述代码将会输出所有当前选择行的文本。
示例代码
下面的代码演示了如何在QListWidget控件中获取当前选择的行的示例:
from PyQt5.QtWidgets import QApplication, QListWidget, QWidget, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
list_widget = QListWidget()
list_widget.addItems(['item1', 'item2', 'item3'])
layout.addWidget(list_widget)
window.setLayout(layout)
# 获取当前选择的行
button = QPushButton('获取当前选择的行')
button.clicked.connect(lambda: print("当前选择的行是:", list_widget.currentRow()))
layout.addWidget(button)
# 批量删除所选项
button = QPushButton('批量删除所选项')
button.clicked.connect(lambda: [item.text() for item in list_widget.selectedItems()].__len__() >= 1 and list_widget.clearSelection() or False)
layout.addWidget(button)
window.show()
app.exec_()
在该示例中,定义了两个QPushButton按钮,分别是"获取当前选择的行"和"批量删除所选项"。点击"获取当前选择的行"按钮时,应该会弹出当前选择的行号。点击"批量删除所选项"按钮时,会批量删除用户当前选择的行。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 QListWidget – 获取当前选择的行 - Python技术站