pyqt5 tableWidget用法


PyQt5 表格控件(QTableWidget)

一篇實例(轉載)

from PyQt5.QtWidgets import QApplication,QTableWidget,QWidget,QHeaderView,QPushButton,QTableWidgetItem,QFrame
import sys
from PyQt5.QtGui import QBrush,QColor,QFont,QIcon
from PyQt5.QtCore import Qt,QSize
class win(QWidget):
def __init__(self):
        super().__init__()
        self.resize(500,500)
        self.setWindowTitle('表格學習')
        titles = ['編號', '姓名', '工資', '入職日期', ' 性別']
        self.table = QTableWidget(self)   #創建空表格
        self.table.resize(450,300)
#self.table = QTableWidget(4,3,self)  #創建4行3列的表格
        self.table.setRowCount(9)  # 設置行數--不包括標題列
        self.table.setColumnCount(5)  # 設置列數
        self.table.setHorizontalHeaderLabels(titles)  # 標題列---水平標題
        #參數 標題列表
        #self.table.setVerticalHeaderLabels(titles)  # 標題列---垂直標題

        #self.table.horizontalHeader().setStyleSheet("background-color: blue")#表格頭添加背景顏色
        #沒有效果  ???
        self.table.setEditTriggers(QTableWidget.AnyKeyPressed)  # 單元格用戶能否、如何編輯
        #QTableWidget.NoEditTriggers   單元格用戶不可編輯
        #QTableWidget.DoubleClicked    連續雙擊即可編輯
        #QTableWidget.SelectedClicked  在被選中的情況下單擊一次即可編輯
        #QTableWidget.CurrentChanged    選中的單元格改變了即可編輯
        #QTableWidget.AnyKeyPressed   按下任何符號鍵即可編輯
        self.table.setSelectionBehavior(QTableWidget.SelectItems)  # 設置選中行
        #鼠標點選時,默認選中一個單元格---QTableWidget.SelectItems
        #QTableWidget.SelectRows   鼠標點擊選中一行
        #QTableWidget.SelectColumns  鼠標點擊選中一列
        self.table.setAlternatingRowColors(True)  #行是否自動變色
        self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  #設置列寬的適應方式
        #QHeaderView.Stretch   拉伸--表格總寬度充滿表格
        #QHeaderView.Fixed    固定寬度
        #QHeaderView.ResizeToContents    適應內容
        s=self.table.columnCount()  #返回列數
        QTableWidget.resizeRowsToContents(self.table)   #設置行高與內容匹配
        #QTableWidget.resizeColumnsToContents(self.table)

        #self.table.horizontalHeader().setFixedHeight(50)  # 設置表列頭高度
        #self.table.horizontalHeader().setFixedWidth(820)  # 設置列寬(沒啥用)

        #self.table.setColumnWidth(1, 350)   #設置某列的寬度
        #setSectionResizeMode 設置后,這個指令無效

        #self.table.setRowHeight(0, 120)  #設置某行的高度
        self.table.horizontalHeader().setVisible(True)  #水平表格頭是否隱藏
        #self.table.verticalHeader().setVisible(False)  #垂直表格頭是否隱藏
        lb=QPushButton('按鈕')
#self.table.setCellWidget(0, 1, lb)  #在指定單元格內放置控件
        #0行1列----不包括標題頭
        newItem = QTableWidgetItem('1')  #創建表格項---文本項目
        self.table.setItem(0, 0, newItem)  #給指定單元格設置數據
        newItem = QTableWidgetItem('12')
        self.table.setItem(1,0,newItem)
        newItem = QTableWidgetItem('123')
        self.table.setItem(2, 0, newItem)
        newItem = QTableWidgetItem('1234')
        self.table.setItem(3, 0, newItem)
        newItem = QTableWidgetItem('12')
        self.table.setItem(4, 0, newItem)

        pb=QPushButton('測試按鈕',self)
        pb.move(50,470)
        pb.clicked.connect(self.AA)

        self.table.hideRow(1)  #隱藏指定行
        self.table.showRow(1)  # 顯示指定行
        item=self.table.item(1,0)  #返回指定單元格的對象
        s=self.table.item(1, 0).text()  #返回指定單元格的文本內容
        item.setForeground(QBrush(QColor(255, 0, 0)))  #設置指定單元格的前景色
        item.setBackground(QColor(250, 0, 0))  #設置指定單元格的背景景色
        item.setTextAlignment(Qt.AlignRight | Qt.AlignBottom)  #給指定單元格設置對齊方式

        #self.table.sortItems(0, Qt.DescendingOrder)  #指定列排序
        #參數1  列序號
        #參數2  Qt.DescendingOrder   降序;Qt.AscEndingOrder  升序
        headItem = self.table.horizontalHeaderItem(1)  #獲取指定列的標題項的對象
        s= self.table.horizontalHeaderItem(1).text()  #獲取指定列的標題文本內容
        headItem.setFont(QFont("黑體", 14, QFont.Bold))  #給指定列的標題設置字體
        headItem.setForeground(QBrush(Qt.blue))  #給指定列的標題設置文本顏色
        headItem.setBackground(QColor(0, 0, 250) ) # 給指定列的標題設置背景顏色
        #沒有效果  ???
        items = self.table.findItems('12', Qt.MatchExactly)  #尋找
        #Qt.MatchContains   只要包含指定文本的就算
        #Qt.MatchExactly    完全匹配才算
        #返回值:滿足條件的單元格對象的列表
        item=items[0]
        item.setSelected(False)   #設置指定單元格是否選中
        s=item.row()  #返回單元格對象的行號
        
        #self.table.setSpan(2, 0, 4, 1)  #合並單元格
        #2行0列開始,占據4行1列
        font = self.table.horizontalHeader().font()  #獲取水平標題頭的字體        font.setBold(True)
        font.setPointSize(13)
        self.table.horizontalHeader().setFont(font)  #給水平標題頭設置字體
        #headItem.setFont已經設置過的好像不起效果【特異性原則】

        #self.table.setFrameShape(QFrame.NoFrame)  # 設置表格外層無邊框
        #self.table.setShowGrid(False)  # 是否顯示單元格網格線,False 則不顯示
        #self.table.horizontalHeader().setHighlightSections(True)  # 設置表格列頭是否塌陷
        #看不出效果   ???
        newItem = QTableWidgetItem(QIcon("./大象.png"), "大象")  #創建表格項---圖片項目
        #參數2  描述
        self.table.setIconSize(QSize(100, 100))  #設置圖片大小
        newItem.setFlags(Qt.ItemIsEnabled)  #用戶點擊表格時,圖片被選中
        self.table.setColumnWidth(2, 100)  #設置指定列的列寬
        self.table.setRowHeight(2, 100)  #設置指定行的行高
        self.table.setItem(2, 2, newItem)  #給指定單元格設置圖片項

        #self.table.clear()  #清除所有數據--包括標題頭
        self.table.clearContents()  #清除所有數據--不包括標題頭

        print(s)
def AA(self):
        s=self.table.currentRow()  #返回當前行序號
        #self.table.insertRow(s)  #在指定行的上面插入一行
        #self.table.removeRow(s)   #刪除指定行
        s=self.table.currentColumn()  #返回當前列序號
        #self.table.insertColumn(s)  #在指定列的前面插入一列
        #self.table.removeColumn(s)  #刪除指定列


免責聲明!

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



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