PyQt之 QTableWidget、QMessageBox

QMessageBox

1
2
3
4
5
# 不用多说
def msg(self,str):
msgBox = QMessageBox(QMessageBox.NoIcon, '消息', str)
msgBox.setWindowIcon(QIcon('GitHub.png'))
msgBox.exec()

QTableWidget

  1. 创建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
    22
    class 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_())
  2. 增加表头

    1
    2
    self.horizontalHeader = ["序号"]+["一位","缺数","预测值"]+['量变','预测状态','单行净胜']
    self.table.verticalHeader().setVisible(False) # 隐藏左侧垂直表头 self.table.setHorizontalHeaderLabels(self.horizontalHeader)
  3. 表头样式

    1
    2
    3
    4
    5
    6
    7
    self.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)
  4. 单元格编辑、选择设置

    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 )
  5. 自动调整单元格大小

    1
    2
    self.table.resizeColumnsToContents()
    self.table.resizeRowsToContents()
  6. 单元格设置

    1
    2
    3
    4
    5
    self.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显示网格线
  7. 插入行/列

    1
    2
    3
    4
    5
    row_count = self.table.rowCount()
    self.table.insertRow(row_count)

    col_count = self.table.columnCount()
    self.table.insertColumn(col_count)
  8. 去除行/列

    1
    2
    3
    4
    5
    row_count = self.table.rowCount()
    self.table.removeRow(row_count-1)

    col_count = self.table.columnCount()
    self.table.removeColumn(col_count-1)
  9. 清空表格

    因为会连表头一起清空,需要重新设置表头

    1
    self.table.clear()       self.table.setHorizontalHeaderLabels(self.horizontalHeader)
  10. 获取单元格内容

    1
    res = self.table.item(rowindex, colindex).text()
  11. 设置单元格内容

    注意,需要确认text为str

    1
    self.table.setItem(rowindex, colindex, QTableWidgetItem(str(text)))
  12. 窗口美化

    1
    2
    3
    self.setWindowOpacity(0.9)  # 设置窗口透明度
    self.setWindowTitle("XXX系统")
    self.setWindowIcon(QIcon('GitHub.png')) # 图标
不要打赏,只求关注呀QAQ