下面是PyQt5 QListWidget-获得当前项改变信号的完整使用攻略。
前置知识
在学习本教程之前,您需要掌握以下基础知识:
- Python基础语法
- PyQt5基础知识
QListWidget简介
QListWidget是PyQt5中的一种列表控件,其显示方式为列表项,支持单选、多选等模式,并且可以添加各种类型的组件,例如复选框、进度条等。
获得当前项改变信号
QListWidget提供了currentItemChanged信号,当当前项改变时,该信号会被触发。
以下是关于currentItemChanged信号的一些说明:
- 触发条件:当当前项(当前被选中的项)发生改变时
- 信号类型:PyQt5.QtWidgets.QListWidget.currentItemChanged
- 信号参数:该信号会传递两个参数,一个是当前项(PyQt5.QtWidgets.QListWidgetItem类型),另一个是前一项(PyQt5.QtWidgets.QListWidgetItem类型)
使用如下方法可以连接该信号:
self.listWidget.currentItemChanged.connect(self.onCurrentItemChanged)
完整示例
以下是一个完整的使用QListWidget获得当前项改变信号的示例,该示例会在列表框中添加5个项:
from PyQt5 import QtWidgets
class ListWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(ListWidget, self).__init__(parent)
self.listWidget = QtWidgets.QListWidget()
self.listWidget.addItems(['item1', 'item2', 'item3', 'item4', 'item5'])
self.listWidget.currentItemChanged.connect(self.onCurrentItemChanged)
mainLayout = QtWidgets.QVBoxLayout()
mainLayout.addWidget(self.listWidget)
self.setLayout(mainLayout)
def onCurrentItemChanged(self, current, previous):
print('Current item:', current.text())
print('Previous item:', previous.text() if previous else 'None')
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
listWidget = ListWidget()
listWidget.show()
sys.exit(app.exec_())
运行程序,可以看到在列表框中选择不同的项时,程序会输出当前项和前一项的文本内容。
接下来,我们再来看一个使用QListWidget获得当前项改变信号的另一个示例,该示例会在列表框中添加图片项:
from PyQt5 import QtWidgets, QtGui
class ListWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(ListWidget, self).__init__(parent)
self.listWidget = QtWidgets.QListWidget()
self.listWidget.setViewMode(QtWidgets.QListWidget.IconMode)
self.listWidget.setIconSize(QtCore.QSize(100, 100))
for i in range(5):
icon = QtGui.QIcon('images/icon{}.png'.format(i+1))
item = QtWidgets.QListWidgetItem(icon, 'Item{}'.format(i+1), self.listWidget)
item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
self.listWidget.currentItemChanged.connect(self.onCurrentItemChanged)
mainLayout = QtWidgets.QVBoxLayout()
mainLayout.addWidget(self.listWidget)
self.setLayout(mainLayout)
def onCurrentItemChanged(self, current, previous):
print('Current item:', current.text())
print('Previous item:', previous.text() if previous else 'None')
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
listWidget = ListWidget()
listWidget.show()
sys.exit(app.exec_())
运行程序,可以看到在列表框中选择不同的项时,程序会输出当前项和前一项的文本内容。
以上就是PyQt5 QListWidget-获得当前项改变信号的完整使用攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 QListWidget – 获得当前项改变信号 - Python技术站