import sys
from PySide6 import QtCore,QtWidgets
from PySide6.QtCore import QAbstractTableModel,Qt
from PySide6.QtWidgets import QApplication, QMainWindow,QWidget
import pandas as pd
from ui_tableview import Ui_Form
class DataFrameModel(QAbstractTableModel):
def __init__(self, data):
super().__init__()
self._data = data
def rowCount(self, parent=None):
return self._data.shape[0]
def columnCount(self, parent=None):
return self._data.shape[1]
def data(self, index, role=Qt.DisplayRole):
if role == Qt.DisplayRole:
return str(self._data.iloc[index.row(), index.column()])
return None
class TableView_test(QWidget):
def __init__(self):
super().__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
self.__tableview()
def __tableview(self):
file = 'data.csv'
df = pd.read_csv(file)
model = DataFrameModel(df)
self.ui.tableView.setModel(model)
# self.ui.tableView.resizeColumnsToContents()
# 隱藏表頭
self.ui.tableView.verticalHeader().hide() # 隱藏行號
self.ui.tableView.horizontalHeader().hide() # 隱藏列名
# 設定列寬
self.ui.tableView.setColumnWidth(0, 60) # 第一列寬度設定為60
# 設定行高
self.ui.tableView.setRowHeight(0, 26) # 第一行高度設定為26
# 交替顏色繪製背景
self.ui.tableView.setAlternatingRowColors(True)
# 設定字型大小 隱藏邊框
self.ui.tableView.setStyleSheet("""
QTableView {
font-size: 14pt; /* 設定字型大小 */
border: none; /*隱藏邊框 */
gridline-color: transparent; /* 移除網格線(可選) */
selection-background-color: lightblue; /* 示例:設定選擇背景顏色 */
}
""")
if __name__ == "__main__":
app = QApplication(sys.argv)
w = TableView_test()
w.show()
sys.exit(app.exec())