# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys
class myDialog(QDialog):
"""docstring for myDialog"""
def __init__(self, arg=None):
super(myDialog, self).__init__(arg)
self.setWindowTitle("first window")
self.resize(500,300);
conLayout = QHBoxLayout()
tableWidget=QTableWidget()
tableWidget.setRowCount(5)
tableWidget.setColumnCount(4)
conLayout.addWidget(tableWidget)
for i in range(5):
for j in range(4):
tableWidget.setItem(i,j, QTableWidgetItem(self.tr(str(i)+str(j))))
self.setLayout(conLayout)
app = QApplication(sys.argv)
dlg = myDialog()
dlg.show()
dlg.exec_()
app.exit()
效果图如下:
设置表格头tableWidget.setHorizontalHeaderLabels(['a','b','a','b'])
tableWidget.setVerticalHeaderLabels(['va','vb','vc','vd','ve'])
上面代码要记得放在下面代码之后否则是没有效果的tableWidget.setRowCount(5)
tableWidget.setColumnCount(4)
运行效果如图:
单元格里面还可以放控件如下代码:# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys
class myDialog(QDialog):
"""docstring for myDialog"""
def __init__(self, arg=None):
super(myDialog, self).__init__(arg)
self.setWindowTitle("first window")
self.resize(500,300);
conLayout = QHBoxLayout()
tableWidget=QTableWidget()
tableWidget.setRowCount(5)
tableWidget.setColumnCount(4)
tableWidget.setHorizontalHeaderLabels(['a','b','a','b'])
tableWidget.setVerticalHeaderLabels(['va','vb','vc','vd','ve'])
conLayout.addWidget(tableWidget)
for i in range(5):
for j in range(4):
#可以在单元格中加入控件
comBox = QComboBox();
comBox.addItem("Y");
comBox.addItem("N");
tableWidget.setCellWidget(i,j,comBox);
self.setLayout(conLayout)
app = QApplication(sys.argv)
#全局设置QPushButton的背景样式
dlg = myDialog()
dlg.show()
dlg.exec_()
app.exit()
运行效果如下:
单元格默认是可以编辑的下面代码可以设置为只读tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers);
单元格默认是可以选中单个单元格,下面代码可以设置成选中一行tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows);
隐藏列表头#隐藏列表头
tableWidget.verticalHeader().setVisible(False);
#隐藏行表头
tableWidget.horizontalHeader().setVisible(False);
还可以将行和列的大小设为与内容相匹配tableWidget.resizeColumnsToContents();
tableWidget.resizeRowsToContents();