Pyqt5 表格視圖控件方法總結


聲明:本文是在參考文上的繼承,和自己使用過程中相關的補充
參考資料:(這些參考文都非常棒)

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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM