1 #QTableWidget 控件使用
2 from PyQt5.QtWidgets importQComboBox,QTableView,QAbstractItemView,QHeaderView,QTableWidget, QTableWidgetItem, QMessageBox,QListWidget,QListWidgetItem, QStatusBar, QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout, QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel3 from PyQt5.QtGui importQIcon,QPixmap,QStandardItem,QStandardItemModel,QCursor,QFont,QBrush,QColor4 from PyQt5.QtCore importQStringListModel,QAbstractListModel,QModelIndex,QSize,Qt5
6 importsys7
8
9 classWindowClass(QWidget):10
11 def __init__(self,parent=None):12
13 super(WindowClass, self).__init__(parent)14 self.layout=QHBoxLayout()15 self.resize(400,300)16 tableWidget=QTableWidget()17 tableWidget.setRowCount(4)#行数
18 tableWidget.setColumnCount(4)#列数
19 tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)#所有列自动拉伸,充满界面
20 tableWidget.setSelectionMode(QAbstractItemView.SingleSelection) #设置只能选中一行
21 tableWidget.setEditTriggers(QTableView.NoEditTriggers) #不可编辑
22 tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows); #设置只有行选中, 整行选中
23 tableWidget.resizeColumnsToContents()#设置列宽高按照内容自适应
24 tableWidget.resizeRowsToContents()#设置行宽和高按照内容自适应
25 #tableWidget.horizontalHeader().setVisible(False)#设置列标题隐藏(针对列标题横向排列)
26 #tableWidget.verticalHeader().setVisible(False)#设置列标题隐藏(针对列标题纵向排列)
27 self.layout.addWidget(tableWidget)28 tableWidget.setHorizontalHeaderLabels(['姓名','地址','年龄','操作']) #横向标题排列,如果使用setVerticalHeaderLabels则是纵向排列标题
29 items=[['JONES','Beijing','23',''],['SMITH','SHAngHai','23',''],['ZY','Tianjin','23',''],['Smith','SJT','22','']]30 for i in range(len(items)):#注意上面列表中数字加单引号,否则下面不显示(或者下面str方法转化一下即可)
31 item=items[i]32
33 for j inrange(len(item)):34 #-----------------------------修改后程序,最后一列添加按钮-------------------#
35 if j!=3:36 item =QTableWidgetItem(str(items[i][j]))37 tableWidget.setItem(i, j, item)38 else: #最后一列添加控件
39 btn = QPushButton("删除")40 btn.setDown(True)41 btn.setStyleSheet("QPushButton{margin:3px};")42 tableWidget.setCellWidget(i, j, btn)43 #--------------------------------------------------------------------------#
44
45 #------------------------------0,1位置添加下拉列表框----------------------#
46 #某个单元格设置为控件
47 comBox=QComboBox()48 comBox.addItem("北京")49 comBox.addItems(["上海","天津"])50 comBox.setStyleSheet("QComboBox{margin:3px};")51 tableWidget.setCellWidget(0,1,comBox)52 #------------------------------------------------------------------------#
53 #字体设置
54 newItem=tableWidget.item(0,0)55 newItem.setFont(QFont("Times",12,QFont.Black))#字体样式加粗
56 newItem.setForeground(QBrush(QColor(255,0,0)))#字体颜色
57 #设置排序
58 tableWidget.sortItems(1,Qt.AscendingOrder)#Qt.DescendingOrder 升序降序
59 item_00=tableWidget.item(0,0)60 item_00.setTextAlignment(Qt.AlignRight)#Qt.AlignCenter ...
61 #合并单元格
62 tableWidget.setSpan(0,0,3,1)63 #单元格宽高设置
64 tableWidget.setColumnWidth(0,150)#第一个参数为行下标
65 tableWidget.setRowHeight(0,40)66 #设置不显示分割线
67 tableWidget.setShowGrid(False)68
69 #单元格设置图片
70 tableWidget.setItem(1,1,QTableWidgetItem(QIcon("./image/add.ico"),"百度"))71
72 tableWidget.setItem(0,0,newItem)73
74 self.setLayout(self.layout)75
76 if __name__=="__main__":77 app=QApplication(sys.argv)78 win=WindowClass()79 win.show()80 sys.exit(app.exec_())