2020-03-12 PYQT5界面使用QtableView展示Pandas.DataFrame

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020-03-12 PYQT5界面使用QtableView展示Pandas.DataFrame相关的知识,希望对你有一定的参考价值。

参考技术A pandas数据可以通过设计自定义model,来实现通过QTableView展示数据,实现MVC(模型 - 视图 - 控制器)。以下是收集的两个定义方法,经验证可以直接应用:

pyQt_表格

你好

技术分享图片
  1 #-*- coding:utf-8 -*-
  2 ‘‘‘
  3 Created on 2018年7月19日
  4 
  5 @author: Administrator
  6 ‘‘‘
  7 import sys
  8 from PyQt5.QtCore import Qt
  9 from PyQt5.QtWidgets import QWidget, QApplication, QDesktopWidget, QTableWidget, QHBoxLayout, QTableWidgetItem,QComboBox, QFrame
 10 from PyQt5.QtGui import QFont, QColor, QBrush, QPixmap
 11 
 12 class TableSheet(QWidget):
 13     def __init__(self):
 14         super().__init__()
 15         self.initUi()
 16         
 17     def initUi(self):
 18         horizontalHeader = ["编号", "姓名", "性别", "年龄", "职业"]
 19         
 20         self.table = QTableWidget()
 21         self.table.setColumnCount(5)
 22         self.table.setRowCount(3)
 23         self.table.setHorizontalHeaderLabels(horizontalHeader)
 24         #self.table.setEditTriggers(QTableWidget.NoEditTriggers)#设置编辑模式
 25         self.table.setEditTriggers(QTableWidget.SelectedClicked)
 26         #self.table.setSelectionBehavior(QTableWidget.SelectColumns)#单元格选择设置
 27         self.table.setSelectionBehavior(QTableWidget.SelectItems)
 28         
 29         self.table.setSelectionMode(QTableWidget.ContiguousSelection)#行选择方式
 30         
 31         
 32         for index in range(self.table.columnCount()):
 33             headItem = self.table.horizontalHeaderItem(index)
 34             headItem.setFont(QFont("song", 14, QFont.Bold))
 35             
 36             headItem.setForeground(QBrush(Qt.gray))
 37             headItem.setTextAlignment(Qt.AlignLeft | Qt.AlignVCenter)
 38             
 39         self.table.setColumnWidth(4, 100)
 40         self.table.setRowHeight(0, 40)
 41         # self.table.setFrameShape(QFrame.HLine)#设定样式
 42         # self.table.setShowGrid(False) #取消网格线
 43         # self.table.verticalHeader().setVisible(False) #隐藏垂直表头
 44         
 45         self.table.setItem(0, 0, QTableWidgetItem("001"))
 46         self.table.setItem(0, 1, QTableWidgetItem("刘亦菲"))
 47         genderComb = QComboBox()
 48         genderComb.addItem("")
 49         genderComb.addItem("")
 50         genderComb.setCurrentIndex(1)
 51         self.table.setCellWidget(0, 2, genderComb)
 52         self.table.setItem(0, 3, QTableWidgetItem("30"))
 53         self.table.setItem(0, 4, QTableWidgetItem("演员"))
 54         
 55         
 56         self.table.setItem(1, 0, QTableWidgetItem("002"))
 57         self.table.setItem(1, 1, QTableWidgetItem("马云"))
 58         genderComb = QComboBox()
 59         genderComb.addItem("")
 60         genderComb.addItem("")
 61         genderComb.setCurrentIndex(0)
 62         self.table.setCellWidget(1, 2, genderComb)
 63         self.table.setItem(1, 3, QTableWidgetItem("50"))
 64         self.table.setItem(1, 4, QTableWidgetItem("企业家"))
 65         
 66         self.table.setItem(2, 0, QTableWidgetItem("003"))
 67         self.table.setItem(2, 1, QTableWidgetItem("牛油刀"))
 68         genderComb = QComboBox()
 69         genderComb.addItem("")
 70         genderComb.addItem("")
 71         genderComb.setCurrentIndex(0)
 72         self.table.setCellWidget(2, 2, genderComb)
 73         self.table.setItem(2, 3, QTableWidgetItem("28"))
 74         self.table.setItem(2, 4, QTableWidgetItem("企业家"))
 75         
 76         
 77         row_count = self.table.rowCount()
 78         self.table.insertRow(row_count)
 79         mainLayout = QHBoxLayout()
 80         mainLayout.addWidget(self.table)
 81         self.setLayout(mainLayout)
 82         
 83         self.resize(800, 280)
 84         self.center()
 85         self.setWindowTitle("表格演示")
 86         
 87     def center(self):
 88         qr = self.frameGeometry()
 89         cp = QDesktopWidget().availableGeometry().center()
 90         qr.moveCenter(cp)
 91         self.move(qr.topLeft())
 92         
 93         
 94         
 95 if __name__ =="__main__":
 96     app = QApplication(sys.argv)
 97     table = TableSheet()
 98     table.show()
 99     sys.exit(app.exec_())
100         
表格演示

 

以上是关于2020-03-12 PYQT5界面使用QtableView展示Pandas.DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5中登录界面跳转到不同界面的使用方式

python通过PyQt5实现登录界面

PyQt5中登录界面跳转到不同界面的使用方式

PyQt5快速入门PyQt5布局管理

使用PyQt5为YoloV5添加界面

PyQt5快速入门PyQt5 GUI界面设计