QMessageBox
1 | # 不用多说 |
QTableWidget
创建table
创建了一个10*7的table
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22class TableSheet(QWidget):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
self.table = QTableWidget()
self.table.setColumnCount(7)
self.table.setRowCount(10)
mainLayout = QVBoxLayout()
mainLayout.addWidget(self.table)
self.setLayout(mainLayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
table = TableSheet()
table.resize(800, 500)
table.show()
sys.exit(app.exec_())增加表头
1
2self.horizontalHeader = ["序号"]+["一位","缺数","预测值"]+['量变','预测状态','单行净胜']
self.table.verticalHeader().setVisible(False) # 隐藏左侧垂直表头 self.table.setHorizontalHeaderLabels(self.horizontalHeader)表头样式
1
2
3
4
5
6
7self.table.setStyleSheet("QHeaderView::section {background-color: rgb(255,228,225);color: ;}");
for index in range(self.table.columnCount()):
headItem = self.table.horizontalHeaderItem(index)
headItem.setFont(QFont("song", 12, QFont.Bold))
headItem.setForeground(QBrush(Qt.blue))
headItem.setTextAlignment(0x000 | Qt.AlignVCenter)单元格编辑、选择设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23# 表格中的数据,默认只要双击就可以修改其中的数据。
# 如果文档是处于预览状态或者不可编辑状态,那就需要对表格设定为不可编辑模式。
# QTableWidget.NoEditTriggers 0 不能对表格内容进行修改
# QTableWidget.CurrentChanged 1 任何时候都能对单元格修改
# QTableWidget.DoubleClicked 2 双击单元格
# QTableWidget.SelectedClicked 4 单击已选中的内容
# QTableWidget.EditKeyPressed 8 编辑键被按下时,编辑开始
# QTableWidget.AnyKeyPressed 16 按下任意键就能修改
# QTableWidget.AllEditTriggers 31 以上条件全包括
self.table.setEditTriggers(QTableWidget.NoEditTriggers)
# QTableWidget.SelectItems 0 选中单个单元格
# QTableWidget.SelectRows 1 选中一行
# QTableWidget.SelectColumns 2 选中一列
self.table.setSelectionBehavior(QTableWidget.SelectColumns)
# 设定的选择模式:
# QTableWidget.NoSelection 不能选择
# QTableWidget.SingleSelection 选中单个目标
# QTableWidget.MultiSelection 选中多个目标
# QTableWidget.ExtendedSelection shift键的连续选择
# QTableWidget.ContiguousSelection ctrl键的不连续的多个选择
self.table.setSelectionMode(QTableWidget.SingleSelection )自动调整单元格大小
1
2self.table.resizeColumnsToContents()
self.table.resizeRowsToContents()单元格设置
1
2
3
4
5self.table.setColumnWidth(i,j) # 设置第i+1列宽度j
self.table.setRowHeight(i,j) # 设置第i+1行高度j
#self.table.setFrameShape(QFrame.HLine) # 设定样式
#self.table.setShowGrid(False) # False不显示网格线,True显示网格线插入行/列
1
2
3
4
5row_count = self.table.rowCount()
self.table.insertRow(row_count)
col_count = self.table.columnCount()
self.table.insertColumn(col_count)去除行/列
1
2
3
4
5row_count = self.table.rowCount()
self.table.removeRow(row_count-1)
col_count = self.table.columnCount()
self.table.removeColumn(col_count-1)清空表格
因为会连表头一起清空,需要重新设置表头
1
self.table.clear() self.table.setHorizontalHeaderLabels(self.horizontalHeader)
获取单元格内容
1
res = self.table.item(rowindex, colindex).text()
设置单元格内容
注意,需要确认text为str
1
self.table.setItem(rowindex, colindex, QTableWidgetItem(str(text)))
窗口美化
1
2
3self.setWindowOpacity(0.9) # 设置窗口透明度
self.setWindowTitle("XXX系统")
self.setWindowIcon(QIcon('GitHub.png')) # 图标