聲明:本文是在參考文上的繼承,和自己使用過程中相關的補充
參考資料:(這些參考文都非常棒)
https://blog.csdn.net/panrenlong/article/details/79959069【表格創建】
https://www.zhaokeli.com/article/7986.html【QTableView表格視圖控件的使用方法】
https://github.com/muziing/PyQt_practice 【實例大全】!
https://www.cnblogs.com/yanjy-onlyone/p/12297984.html【PyQt5單元格操作大全】
https://blog.csdn.net/yekui006/article/details/98211808【PYQT5表格及樣式設置方法】
Table View and Table Widget
Table View and Table Widget在創建表格時很多方法和都是相同的,只是創建或者一些機制有些不一樣,具體我也不深糾了
將表格變為禁止編輯:
在默認情況下,表格里的字符是可以更改的,比如雙擊一個單元格,就可以修改原來的內容,如果想禁止用戶的這種操作,讓這個表格對用戶只讀,可以這樣:
self.MyTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.MyTable.setEditTriggers(QtWidgets.QTableView.NoEditTriggers)
# 👆都可以將表格變成禁止編輯
# .NoEditTriggers 不能對表格內容進行修改
# .CurrentChanged 任何時候都能對單元格修改
# .DoubleClicked 雙擊單元格
# .SelectedClicked 單擊已選中的內容
# .EditKeyPressed Editing starts when the platform edit key has been pressed over an item
# .AnyKeyPressed 按下任意鍵就能修改
# .AllEditTriggers 以上條件全包括
# https://blog.csdn.net/LaoYuanPython/article/details/102367884 【常量含義說明】
設置表格為整行選擇:
self.MyTable.setSelectionBehavior(QAbstractItemView.SelectRows)
# .SelectItems 選中單個單元格
# .SelectRows 選中一行
# .SelectColumns 選中一列
單個選中和多個選中的設置:
self.MyTable.setSelectionMode(QAbstractItemView.ExtendedSelection) #設置為可以選中多個目標
#.NoSelection 不能選擇
#.SingleSelection 選中單個目標
#.MultiSelection 選中多個目標,正常情況下是單選,但按下Ctrl或Shift鍵后,可以多選
合並單元格效果的實現
setSpan(row,column,要合並的行數,要合並的列數)
# 參數解析:
# 將第row行,第column列 合並為?行,?列
在單元格里加入控件或者圖片
QTableWidget不僅允許把文字加到單元格,還允許把控件也放到單元格中,比如,下拉框什么的都可以加入單元格
self.MyCombo = QComboBox()
self.MyCombo.addItem("√")
self.MyCombo.addItem("×")
self.MyTable.setCellWidget(1,0,self.MyCombo)
設置表格外部無邊框and不顯示格子線:
myTable.setFrameShape(QFrame.Box) # 設置表格外部無邊框
myTable.setShowGrid(False) # 設置不顯示格子線
設置某一列(行)的行高或列寬:
myTable.horizontalHeader().resizeSection(0,300) #設置第一列的寬度
myTable.verticalHeader().resizeSection(0,500) #設置第一行的高度
設置表頭相關操作
#對表頭文字的字體,顏色,背景顏色,對齊方式進行設置
for x in range(self.MyTable.columnCount()):
headItem = self.MyTable.horizontalHeaderItem(x) # 獲得水平方向表頭的Item對象
headItem.setFont(QtGui.QFont('微軟雅黑',11,QtGui.QFont.Black)) # 設置字體樣式和大小
headItem.setForeground(QBrush(QColor(255,255,0))) # 設置字體顏色
headItem.setBackground(QBrush(QColor(0,0,255))) # 設置字體的背景顏色
headItem.setTextAlignment(QtCore.Qt.AlignLeft) # 左對齊
# 還可以這么寫
headItem.setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignBottom) #設置右對齊方式和底下對齊
# 對齊方式
Qt::AlignLeft::水平方向靠左。
Qt::AlignRight:水平方向靠右。
Qt::AlignHCenter:水平方向居中。
Qt::AlignJustify:水平方向調整間距兩端對齊。
Qt::AlignTop:垂直方向靠上。
Qt::AlignButton:垂直方向靠下。
Qt::AlignVCenter:垂直方向居中。
Qt::AlignCenter:等價於 Qt::AlignHCenter | Qt::AlignVCenter
self.MyTable.verticalHeader().setVisible(False) # 水平表頭隱藏 True-->顯示
self.MyTable.horizontalHeader().setVisible(False) # 垂直表頭隱藏
myTable.horizontalHeader().setFixedHeight(100) # 且只能用該類方法設置橫向表頭的高度
myTable.verticalHeader().setFixedWidth(300) # 且只能用該類方法設置縱向表頭的寬度
#設置表頭不可點擊
myTable.verticalHeader().setClickable(False)
# # 設置橫向表頭加粗
# font = tab.horizontalHeader().font()
# font.setBold(True)
# tab.horizontalHeader().setFont(font)
# #豎向加粗
# font1=tab.verticalHeader().font()
# font1.setBold(True)
# tab.verticalHeader().setFont(font1)
#設置表頭內某個元素的字體加粗橫向:
# font = QFont()
# font.setBold(True)
# item = tab.horizontalHeaderItem(0)
# item.setFont(font)