新建一个应用
from PyQt5 import QtWidgets,QtCore,QtGui
import sys
app = QtWidgets.QApplication(sys.argv)
sys.exit(app.exec_())
新建一个窗口
# from PyQt5 import QtWidgets,QtCore,QtGui
# import sys
# app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
window.show()
# sys.exit(app.exec_())
新建列表展示控件
# from PyQt5 import QtWidgets,QtCore,QtGui
# import sys
# app = QtWidgets.QApplication(sys.argv)
# window = QtWidgets.QMainWindow()
# window.resize(350, 250)
listView = QtWidgets.QListView(window)
listView.setGeometry(0, 0, 350, 250)
# window.show()
# sys.exit(app.exec_())
给列表添加数据,python中的数据字符串列表无法直接传递给QListView,需要借助模型传递,这里使用QStringListModle
相关文章:QT5知识:字符串列表QStringListModel
添加stringListModel,并添加了数据, 获取model数据
#from PyQt5 import QtWidgets,QtCore,QtGui
#import sys
#app = QtWidgets.QApplication(sys.argv)
#window = QtWidgets.QMainWindow()
#window.resize(350, 250)
#listView = QtWidgets.QListView(window)
#listView.setGeometry(0, 0, 350, 250)
list = ["ItemA", "ItemB", "ItemC"]
model = QtCore.QStringListModel()
model.setStringList(list)
print(model.stringList())
listView.setModel(model)
#window.show()
s#ys.exit(app.exec_())
添加数据还可以使用另外一种方式,在学习另一种添加方式前,我们先定义一个点击事件
#from PyQt5 import QtWidgets,QtCore,QtGui
#import sys
def lv_clicked(index):
print(index.data())
#app = QtWidgets.QApplication(sys.argv)
#window = QtWidgets.QMainWindow()
#window.resize(350, 250)
#listView = QtWidgets.QListView(window)
#listView.setGeometry(0, 0, 350, 250)
#list = ["ItemA", "ItemB", "ItemC"]
#model = QtCore.QStringListModel()
#model.setStringList(list)
#print(model.stringList())
#listView.setModel(model)
listView.clicked.connect(lv_clicked)
#window.show()
#sys.exit(app.exec_())
每次点击列表时会打印选中的列表成员
接下来可以尝试删除列表成员
def lv_clicked(index):
print(index.data())
model.removeRow(0)
每次点击列表,最上面的成员就被删除
如果要删除选中的成员,应该可以猜出来吧
def lv_clicked(index):
print(index.row())
model.removeRow(index.row())
所以另外一种添加数据的方式就是使用insertRow(),查询这个命令构造,会发现和removeRow相同,只需要接受一个序号用来指定删除和添加的位置。那么添加的值如何指定?
这个命令会先插入一个空值,然后再给这个成员设置值
def lv_clicked(index):
row = index.row()
model.insertRow(row)
index = model.index(row)
print(index)
model.setData(index, "aaa")