|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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_())
复制代码
|
-
|