马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
两个py文件,第一个文件是把表格中数据用pandas读成dataframe。
然后model,view形成tabelview
代码如下:import sys
import pandas as pd
from PyQt5.QtWidgets import QApplication, QTableView
from PyQt5.QtCore import QAbstractTableModel, Qt
def read_df():
path = r'demo.xlsx'
df = pd.read_excel(path)
return df
class pandasModel(QAbstractTableModel):
def __init__(self, data):
QAbstractTableModel.__init__(self)
self._data = data
def rowCount(self, parent=None):
return self._data.shape[0]
def columnCount(self, parnet=None):
return self._data.shape[1]
def data(self, index, role=Qt.DisplayRole):
if index.isValid():
if role == Qt.DisplayRole:
return str(self._data.iloc[index.row(), index.column()])
return None
def headerData(self, col, orientation, role):
if orientation == Qt.Horizontal and role == Qt.DisplayRole:
return self._data.columns[col]
return None
if __name__ == '__main__':
app = QApplication(sys.argv)
model = pandasModel(read_df())
view = QTableView()
view.setModel(model)
view.resize(800, 600)
view.show()
sys.exit(app.exec_())
然后另外一个py文件建立tab多页的ui,
想把上边的tableview添加到tab上。最好是有一个按钮,点击按钮tableview显示出来。
第二个py文件如下import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Demo(QTabWidget):
def __init__(self,parent = None):
super(Demo, self).__init__(parent)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.addTab(self.tab1,'111')
self.addTab(self.tab2, '222')
self.tab1UI()
def tab1UI(self):
layout = QFormLayout()
layout.addRow('name',QLineEdit())
layout.addRow(QPushButton('点击我显示tableview'))
self.setTabText(0,'改列名试试')
self.tab1.setLayout(layout)
if __name__ == '__main__':
app=QApplication(sys.argv)
form = Demo()
form.show()
sys.exit(app.exec_())
想实现的效果如下
本帖最后由 hrp 于 2020-12-11 23:26 编辑 import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Demo(QTabWidget):
def __init__(self, parent=None):
super(Demo, self).__init__(parent)
self.tab1 = QWidget()
self.tab2 = QWidget()
# QTableView实例
self.table_view = QTableView()
self.addTab(self.tab1, '111')
self.addTab(self.tab2, '222')
self.tab1UI()
def tab1UI(self):
layout = QFormLayout()
layout.addRow('name', QLineEdit())
layout.addRow(QPushButton('点击我显示tableview'))
# 增加一个QTableView就可以了
# 至于按钮的点击:
# 设置点击信号连接到一个新函数,该函数进行self.table_view的各种更新操作
# 比如对self.table_view设置model啊清空啊啥的
layout.addWidget(self.table_view)
self.setTabText(0, '改列名试试')
self.tab1.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Demo()
form.show()
sys.exit(app.exec_())
|