1、显示二维列表数据(QTableView)控件
‘‘‘
显示二维列表数据(QTableView)控件
数据源
model
需要创建一个QTableView实例和一个数据源model,然后将其两者关联
MVC模式 model viewer controller 前后端关联
MVC的目的是将后端的数据和前端页面的耦合度降低
‘‘‘
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys
class tableview(QWidget):
def __init__(self):
super(tableview, self).__init__()
self.setWindowTitle("QTableView表格视图控件演示")
self.resize(600,500)
self.model=QStandardItemModel(5,3) #创建一个标准的数据源model
self.model.setHorizontalHeaderLabels(["id","姓名","年龄"]) #设置表格的表头名称
self.tableview=QTableView()
#关联model和tableview控件
self.tableview.setModel(self.model)
#添加数据
#首先定义字符类数据
item11=QStandardItem("10")
item12=QStandardItem("雷神")
item13=QStandardItem("2000")
#其次将定义好的的数据添加到数据源model中
self.model.setItem(0,0,item11)
self.model.setItem(0,1,item12)
self.model.setItem(0,2,item13)
layout=QVBoxLayout()
layout.addWidget(self.tableview)
self.setLayout(layout)
if __name__=="__main__":
app=QApplication(sys.argv)
p=tableview()
p.show()
sys.exit(app.exec_())
2、显示一维列表数据
‘‘‘
显示列表数据控件QListView控件
‘‘‘
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QStringListModel
import sys
class Listview(QWidget):
def __init__(self):
super(Listview,self).__init__()
self.setWindowTitle("QlistView列表展现控件演示")
self.resize(300,270)
layout=QVBoxLayout()
listview=QListView()
listmodel=QStringListModel()
self.list=["列表项1","列表项2","列表项3"]
listmodel.setStringList(self.list)
listview.setModel(listmodel)
listview.clicked.connect(self.click)
layout.addWidget(listview)
self.setLayout(layout)
def click(self,item):
QMessageBox.information(self,"QListView","您选择了"+self.list[item.row()])
print("hello world")
if __name__=="__main__":
app=QApplication(sys.argv)
p=Listview()
p.show()
sys.exit(app.exec_())
3、扩展的表格控件QTableWidget控件
‘‘‘
显示扩展的列表数据控件QTableWidget控件
cell是指一个单元格QTableWidgetItem
‘‘‘
from PyQt5.QtWidgets import *
import sys
class Tablewidget(QWidget):
def __init__(self):
super(Tablewidget,self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("QTableWidget扩展表格控件演示")
self.resize(430,230)
#定义一个扩展的单元格控件
tablewidget=QTableWidget()
# 设置表格的行和列数
tablewidget.setRowCount(4)
tablewidget.setColumnCount(3)
layout = QVBoxLayout()
layout.addWidget(tablewidget)
#设置表格控件的列表头名称
tablewidget.setHorizontalHeaderLabels(["姓名","年龄","籍贯"])
#定义单元格的内容
nameitem=QTableWidgetItem("小明")
tablewidget.setItem(0,0,nameitem)
ageitem=QTableWidgetItem("23")
tablewidget.setItem(0,1,ageitem)
jgitem=QTableWidgetItem("北京")
tablewidget.setItem(0,2,jgitem)
#禁止编辑
tablewidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
#整行显示
tablewidget.setSelectionBehavior(QAbstractItemView.SelectRows)
#整列显示
tablewidget.setSelectionBehavior(QAbstractItemView.SelectColumns)
#自适应调整行和列的大小
tablewidget.resizeColumnsToContents()
tablewidget.resizeRowsToContents()
#隐藏行和列的表头
#tablewidget.horizontalHeader().setVisible(Fa