【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】

课程目录

  • 视频链接
  • 知识点扩充
  • 课程重点
  • 代码位置
  • 完整代码
  • 遇到的问题
  • 改写效果展示
  • 改写注意点
  • 改写代码(QTdesigner模式)

>>> 点击进入:pyqt5专栏<<<

老师原课件下载地址:
有积分的朋友,支持下我,打赏也OK。
不下载也可以,我每节课会吧代码贴出来


视频链接

P66课时67.扩展的表格控件(QTableWidget)


知识点扩充

PyQt5高级界面控件之QTableWidget(四)

QTableWidget 的常用方法
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第1张图片
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第2张图片
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第3张图片


课程重点

【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第4张图片


代码位置

【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第5张图片


完整代码

'''

扩展的表格控件(QTableWidget)

QTableView

每一个Cell(单元格)是一个QTableWidgetItem

'''

import sys
from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem, QAbstractItemView)


class TableWidgetDemo(QWidget):
    def __init__(self):
        super(TableWidgetDemo,self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("QTableWidget演示")
        self.resize(430, 230);
        layout = QHBoxLayout()
        tablewidget = QTableWidget()
        tablewidget.setRowCount(4)
        tablewidget.setColumnCount(3)

        layout.addWidget(tablewidget)

        tablewidget.setHorizontalHeaderLabels(['姓名','年龄','籍贯'])
        nameItem = QTableWidgetItem("小明")
        tablewidget.setItem(0,0,nameItem)

        ageItem = QTableWidgetItem("24")
        tablewidget.setItem(0,1,ageItem)

        jgItem = QTableWidgetItem("北京")
        tablewidget.setItem(0,2,jgItem)

        # 禁止编辑
        tablewidget.setEditTriggers(QAbstractItemView.NoEditTriggers)

        # 整行选择
        tablewidget.setSelectionBehavior(QAbstractItemView.SelectRows)
        # 调整列和行
        tablewidget.resizeColumnsToContents()
        tablewidget.resizeRowsToContents()

        tablewidget.horizontalHeader().setVisible(False)
     #   tablewidget.verticalHeader().setVisible(False)

        tablewidget.setVerticalHeaderLabels(["a","b"])

        # 隐藏表格线
        tablewidget.setShowGrid(False)

        self.setLayout(layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    example = TableWidgetDemo()
    example.show()
    sys.exit(app.exec_())


遇到的问题

找不到对应的功能
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第6张图片


改写效果展示

【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第7张图片


改写注意点

设置item
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第8张图片

禁止编辑:
在这里插入图片描述
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第9张图片
选择模式:
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第10张图片

设置表头隐藏和显示:
老师的把显示关闭了,所以导致列标题没显示出来。
在这里插入图片描述
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第11张图片

【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第12张图片
单独设置每一个单元格的显示效果
我还没看到如何统一设置,懒得找了
【QTdesigner】课时67.扩展的表格控件(QTableWidget)【pyqt5+QTdesigner模式】_第13张图片


改写代码(QTdesigner模式)

# -*- coding:utf-8 -*-
'''
@Author: knocky
@Blog: https://blog.csdn.net/zzx188891020
@E-mail: [email protected]
@File: class67.py
@CreateTime: 2020/6/3 22:58
'''

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QAbstractItemView
from PyQt5 import uic


class my_form(QWidget):
    def __init__(self):
        super().__init__()
        uic.loadUi('../ui_package/class67.ui', self)
        # 调整列和行
        self.tableWidget.resizeColumnsToContents()
        self.tableWidget.resizeRowsToContents()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = my_form()
    main.show()
    sys.exit(app.exec_())

你可能感兴趣的:(pyqt5,python,pyqt)