(PyQt5 QTableWidget样式终极手册):打造专业级表格界面的必备技能

第一章:PyQt5 QTableWidget单元格样式概述

在 PyQt5 中,`QTableWidget` 是一个功能强大的图形界面组件,广泛用于展示和编辑二维表格数据。通过灵活的 API 支持,开发者可以深度定制单元格的外观与行为,实现丰富的视觉效果和交互体验。

单元格样式的控制方式

`QTableWidget` 提供了多种方式来自定义单元格样式,主要包括:
  • 使用 `QTableWidgetItem` 的 `setForeground`、`setBackground` 方法设置文字颜色和背景色
  • 通过 `setFont` 方法修改字体样式
  • 利用 `setTextAlignment` 控制文本对齐方式
  • 结合 Qt Style Sheets 实现更复杂的整体样式设计

基本样式设置示例

以下代码演示如何为指定单元格设置颜色、字体和对齐方式:
# 创建 QTableWidgetItem 并设置内容
item = QTableWidgetItem("示例文本")

# 设置文本居中对齐(水平和垂直)
item.setTextAlignment(Qt.AlignCenter)

# 设置文本颜色为白色
item.setForeground(QBrush(QColor("white")))

# 设置背景色为深蓝色
item.setBackground(QBrush(QColor("#007acc")))

# 设置字体加粗
font = QFont()
font.setBold(True)
item.setFont(font)

# 将配置好的 item 添加到表格第0行第0列
tableWidget.setItem(0, 0, item)

常用对齐常量参考

常量说明
Qt.AlignLeft左对齐
Qt.AlignRight右对齐
Qt.AlignHCenter水平居中
Qt.AlignVCenter垂直居中
Qt.AlignCenter水平垂直居中
通过组合使用上述方法,可以构建出符合现代 UI 设计标准的数据表格界面,提升用户体验。

第二章:基础样式设置与实践

2.1 设置单元格字体与文本对齐方式

在处理电子表格时,良好的视觉呈现有助于提升数据可读性。通过编程方式设置单元格的字体样式和文本对齐方式,是自动化报表生成中的关键步骤。
字体样式配置
可以为单元格指定字体、大小、颜色以及是否加粗等属性。例如,在使用 Python 的 `openpyxl` 库时:
from openpyxl.styles import Font, Alignment
cell.font = Font(name='Arial', size=12, bold=True, color='FF0000')
该代码将字体设为 Arial,12 号字,加粗并显示为红色。Font 对象封装了所有字体相关属性。
文本对齐控制
文本在单元格内的对齐方式可通过 Alignment 类设置:
cell.alignment = Alignment(horizontal='center', vertical='center')
horizontal 控制水平对齐,可选值包括 'left'、'center'、'right';vertical 支持 'top'、'center'、'bottom',实现精准布局控制。

2.2 背景颜色与前景色的程序化控制

在现代前端开发中,动态控制元素的背景色与前景色是提升用户体验的重要手段。通过 JavaScript 可以实现根据用户交互或数据状态实时调整样式。
动态设置颜色的基本方法
使用 DOM 的 style 属性可直接修改颜色值:

// 设置背景色与文字颜色
element.style.backgroundColor = '#3498db';
element.style.color = '#ffffff';
上述代码通过内联样式为元素赋予蓝色背景与白色文字,适用于临时性样式变更。
基于条件切换主题
  • 根据时间自动切换深色/浅色模式
  • 依据用户偏好(prefers-color-scheme)调整配色
  • 响应按钮点击事件切换主题方案
结合 CSS 类名管理更利于维护:

element.classList.toggle('dark-theme');
该方式将样式逻辑分离至 CSS 文件,增强可读性与复用性。

2.3 边框样式与网格线的美化技巧

边框样式的多样化应用
CSS 提供了丰富的边框样式属性,如 solid、dashed、dotted 等,可灵活用于界面装饰。通过调整边框颜色与圆角,能显著提升视觉层次。
.box {
  border: 2px dashed #007acc;
  border-radius: 8px;
}
上述代码定义了一个蓝色虚线边框容器,border-radius 实现圆角效果,适用于卡片式布局。
网格线的精细化控制
在 CSS Grid 布局中,可通过背景模拟网格线,实现更精细的视觉引导。
属性作用
background-image绘制重复网格线
background-size控制网格间距

2.4 图标与文字混合显示的实现方法

在现代前端开发中,图标与文字的混合显示广泛应用于导航栏、按钮和标签等组件中。通过合理的布局方式,可以显著提升用户界面的可读性与交互体验。
使用内联元素实现基础布局
最常见的实现方式是结合 `` 或 `` 标签插入图标字体(如 Font Awesome),并与文本并列显示:
<button>
  <i class="fas fa-save"></i> 保存数据
</button>
该方法依赖图标字体库,`fas fa-save` 指定具体图标样式,文本紧跟其后,浏览器默认按行内元素排布。
利用 Flex 布局增强对齐控制
为实现更精确的垂直居中与间距管理,推荐使用 Flex 布局:
.icon-text {
  display: flex;
  align-items: center;
  gap: 8px;
}
`align-items: center` 确保图标与文字垂直居中对齐,`gap` 属性统一控制间距,提升一致性与维护性。

2.5 只读与可编辑状态下的视觉区分

在用户界面设计中,清晰地区分只读与可编辑状态是提升可用性的关键。视觉反馈直接影响用户的操作预期与交互效率。
常见视觉差异策略
  • 背景颜色:可编辑字段通常使用白色或浅色背景,只读则采用灰色或透明背景
  • 边框样式:输入框在可编辑状态下显示明显边框(如蓝色外框),只读时边框淡化或隐藏
  • 光标形态:可编辑区域鼠标悬停时显示文本光标(cursor: text),只读则为默认箭头
CSS 实现示例
input[readonly] {
  background-color: #f5f5f5;
  border: 1px solid #ddd;
  cursor: default;
}

input:not([readonly]) {
  background-color: white;
  border: 1px solid #aaa;
  cursor: text;
}
上述样式通过属性选择器动态应用,确保用户能直观识别字段状态,减少误操作风险。背景色与边框的对比强化了视觉层次,提升界面可读性。

第三章:高级样式定制技术

3.1 使用QSS(Qt Style Sheets)统一美化表格

在Qt应用程序中,QSS(Qt Style Sheets)提供了一种类似CSS的语法来统一控件外观。通过为QTableView或QTableWidget定义样式表,可实现跨平台的视觉一致性。
基本样式定义
QTableWidget {
    border: 1px solid #d9d9d9;
    gridline-color: #e6e6e6;
    background-color: #ffffff;
}
QTableWidget::item {
    padding: 6px;
    color: #333333;
}
QTableWidget::item:selected {
    background-color: #0078d7;
    color: white;
}
上述代码设置了表格边框、网格线颜色及选中项高亮效果。其中gridline-color控制单元格分隔线,:selected伪状态定义了选中行为的视觉反馈。
应用策略建议
  • 将QSS集中写入资源文件,便于维护和动态加载
  • 使用类选择器避免影响其他控件
  • 结合调色板变量提升主题切换灵活性

3.2 自定义委托(QItemDelegate)绘制单元格

在 Qt 的模型-视图架构中,`QItemDelegate` 负责单元格的绘制和编辑。通过继承 `QItemDelegate` 并重写 `paint()` 和 `sizeHint()` 方法,可实现高度定制化的单元格外观。
自定义绘制逻辑

class CustomDelegate : public QItemDelegate {
    void paint(QPainter* painter, const QStyleOptionViewItem& option,
               const QModelIndex& index) const override {
        QString text = index.model()->data(index, Qt::DisplayRole).toString();
        painter->save();
        if (index.row() % 2 == 0)
            painter->setBrush(Qt::lightGray);
        else
            painter->setBrush(Qt::white);
        painter->fillRect(option.rect, painter->brush());
        painter->drawText(option.rect, Qt::AlignCenter, text);
        painter->restore();
    }
};
该代码重写了 paint() 方法,根据行号交替背景色,并居中绘制文本。参数 option 提供了绘制区域和状态信息,index 用于获取数据。
应用场景
  • 高亮特定数据行
  • 嵌入进度条或图标
  • 统一视觉风格以匹配 UI 主题

3.3 动态样式响应数据变化与用户交互

数据驱动的样式更新机制
现代前端框架通过响应式系统实现动态样式绑定。当组件状态变化时,框架自动更新关联的 DOM 样式。
  1. 监听数据属性的变化(如 Vue 的 reactive 或 React 的 state)
  2. 根据条件计算新的样式对象或类名
  3. 将结果同步至元素的 class 或 style 属性
代码示例:Vue 中的动态类绑定

<template>
  <div :class="{ active: isActive, 'text-danger': hasError }">
    内容区域
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      hasError: false
    }
  }
}
</script>
上述代码中,:class 绑定一个对象,其属性值为布尔型数据。当 isActive 为真时,元素添加 active 类;hasError 控制 text-danger 类的切换。数据变更瞬间触发视图更新,实现交互反馈。

第四章:实战场景中的样式应用

4.1 数据表格中奇偶行交替着色(斑马线效果)

在数据密集型界面中,提升可读性是优化用户体验的关键。为表格添加奇偶行不同背景色的“斑马线效果”,能有效引导用户横向阅读,减少视觉疲劳。
CSS 实现方式
使用 CSS 的伪类选择器 :nth-child(even) 和 :nth-child(odd) 可轻松实现该效果:
table {
  width: 100%;
  border-collapse: collapse;
}

tr:nth-child(even) {
  background-color: #f2f2f2;
}

tr:nth-child(odd) {
  background-color: #ffffff;
}

td {
  padding: 8px;
  text-align: left;
  border-bottom: 1px solid #ddd;
}
上述代码中,nth-child(even) 匹配偶数行并赋予浅灰色背景,奇数行保持白色,形成清晰的视觉对比。
实际应用示例
  • 适用于后台管理系统中的数据列表
  • 增强报表类页面的信息辨识度
  • 配合悬停高亮(hover)进一步提升交互体验

4.2 条件格式化:基于数值自动变色警示

在数据监控系统中,条件格式化是一种高效的视觉反馈机制,可根据数值动态调整显示样式,实现异常值的快速识别。
基本实现逻辑
通过监听数据变化,结合预设阈值判断当前值的状态,并应用对应CSS类名改变背景色。

function applyConditionalFormatting(value) {
  const cell = document.getElementById('data-cell');
  if (value > 100) {
    cell.className = 'alert-high'; // 红色警示
  } else if (value < 30) {
    cell.className = 'alert-low';   // 蓝色警示
  } else {
    cell.className = 'normal';      // 正常状态
  }
}
上述函数根据数值大小切换元素的样式类。当值超过100时标记为高危(红色),低于30则标记为低值(蓝色),其余为正常(绿色)。
常用颜色映射表
条件样式类含义
> 100alert-high过高风险
< 30alert-low过低警告

4.3 合并单元格时的样式一致性处理

在处理表格合并单元格时,样式一致性是确保视觉统一的关键。当多个单元格合并后,若样式未统一,可能导致边框错位、字体不一致等问题。
样式继承策略
通常以左上角单元格为基准,继承其背景色、字体、对齐方式等属性。其他被合并单元格的样式应被覆盖。
代码实现示例

// 合并单元格并统一应用样式
function mergeCells(table, rowStart, colStart, rowSpan, colSpan) {
  const cell = table.rows[rowStart].cells[colStart];
  cell.rowSpan = rowSpan;
  cell.colSpan = colSpan;
  // 统一设置样式
  cell.style.textAlign = 'center';
  cell.style.backgroundColor = '#f0f0f0';
  // 清除被合并的其他单元格内容与样式
  for (let i = rowStart; i < rowStart + rowSpan; i++) {
    for (let j = colStart; j < colStart + colSpan; j++) {
      if (i !== rowStart || j !== colStart) {
        table.rows[i].cells[j].innerHTML = '';
      }
    }
  }
}
该函数通过设置 rowSpan 和 colSpan 实现合并,并强制统一目标单元格的样式,同时清除冗余单元格内容,防止样式冲突。
常见问题对照表
问题解决方案
边框重复显示清除被合并单元格的边框样式
背景色不一致统一设置主单元格背景色

4.4 高亮选中行或列的专业级视觉方案

交互式高亮设计原则
实现数据表格中行/列的高亮,需兼顾性能与用户体验。推荐采用 CSS 类切换机制,结合事件代理优化渲染效率。
核心实现代码

document.getElementById('table').addEventListener('click', function(e) {
  const row = e.target.closest('tr');
  if (!row) return;
  // 移除旧高亮
  document.querySelectorAll('.highlight').forEach(el => 
    el.classList.remove('highlight')
  );
  // 添加新高亮
  row.classList.add('highlight');
});
该代码通过事件委托绑定点击行为,利用 closest() 定位最近的行元素,并通过类名控制样式变更,避免频繁操作 DOM。
视觉反馈增强策略
  • 使用过渡动画平滑颜色变化,提升感知流畅性
  • 配合辅助色区分选中态与悬停态
  • 支持键盘导航联动,保障可访问性

第五章:总结与最佳实践建议

持续监控与性能调优
在生产环境中,系统的稳定性依赖于实时监控和快速响应。使用 Prometheus 配合 Grafana 可实现对服务指标的可视化追踪。以下是一个典型的 Prometheus 抓取配置示例:

scrape_configs:
  - job_name: 'go_service'
    static_configs:
      - targets: ['localhost:8080']
    metrics_path: '/metrics'
    scheme: http
安全加固策略
确保 API 端点默认启用身份验证,避免暴露敏感接口。推荐使用 JWT 进行无状态认证,并结合 OAuth2 流程管理第三方访问权限。定期轮换密钥,设置合理的过期时间(如 15 分钟访问令牌 + 7 天刷新令牌)。
  • 启用 HTTPS 并强制 HSTS 策略
  • 限制请求频率,防止暴力破解
  • 对所有输入进行参数化查询,杜绝 SQL 注入
部署架构优化建议
采用蓝绿部署模式可显著降低上线风险。通过负载均衡器切换流量,确保新版本稳定后再完全切流。下表展示了两种常见部署方案对比:
方案回滚速度资源开销适用场景
蓝绿部署秒级高核心支付系统
滚动更新分钟级低内部微服务
日志聚合与分析
将分散的日志集中到 ELK 栈(Elasticsearch, Logstash, Kibana)中,便于问题定位。为每条日志添加 trace_id,支持跨服务链路追踪。例如,在 Go 应用中使用 Zap 日志库并注入上下文信息:

logger := zap.L().With(zap.String("trace_id", reqID))
logger.Info("handling request", zap.String("path", r.URL.Path))
Pyqt5 QTableWidget/QTableView 行表头添加复选框全选功能 Pyqt5 QTableWidget/QTableView 行表头添加复选框全选功能 效果预览(先上图,如果不是您想要的效果,可直接略过): **起因:**因工作需要,需要用Pyqt5制表格,因为要在行表头 添加一个 复选框 实现 全选功能。在选择QTableWidget 类 还是 QTableView 类时不知改如何抉择,于是各种百度各种博客,结果被一博客误导,踩了好几天的坑,辛酸历程在此不表。所以,特此写下此笔记,供喜欢pyqt5的同行们参考。如能帮到您,将是我的荣幸。 思路: QTableWid 阅读详情

相关推荐

PyQt5 使用自定义ToolTip解决QTableWidget数据显示不全问题

目录 问题描述 解决方案 实现效果 问题描述 最近在使用PyQT5做一个项目,用到最多的控件是QTableWidget,使用很方便,但是也存在很多问题,比如下面这种: 数据太长,使用QTableWidget默认的列宽分配会导致显示不全,数据以"XXX..."的形式呈现,很不利于用户阅读。一个可能的解决办法是采用用户可以手动调整的方式来显示数据。效果如下图: 使用的代码是...

daimashiren的博客 1万+

QT网格线的颜色设置

QColor color=curAxis->gridLineColor(); color=QColorDialog::getColor(color); if (color.isValid()) curAxis->setGridLineColor(color);

weixin_44317873的博客 2137

若依框架(ruoyi vue版)集成jeecg积木报表整体完整实用教程(超长篇幅耐心阅读)

若依框架(ruoyi vue版)集成jeecg积木报表整体完整实用教程,主要说明jeecg积木报表的集成、jeecg积木报表嵌入若依菜单、token权限控制,以及iframe嵌入表格等内容。

weixin_53067723的博客 4642

【QT】QTableWidget设置表格颜色

QT表格操作

qq_44513198的博客 3349

【算法】基于STM32的MPU6050卡尔曼滤波算法(入门级)

1. 简介 卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。详情见:卡尔曼滤波简介 MPU6050的解算主要有三种姿态融合算法:四元数法 、一阶互补算法和卡尔曼滤波算法。我们常用的DMP库使用的是四元数法,本文采用卡尔曼滤波算法,使用RT-Thread国产操作系统,利用env工具进行串口、模拟IIC环境配置,使用10ms的线程进行卡尔曼滤波解算。 2.

weixin_44549777的博客 3万+

【黑马点评】项目知识点及面经整理

【黑马点评】项目知识点及面经整理

m0_52031708的博客 6605

Qt的QTableWidget样式设置

/ 通过代理自定义样式(需要继承 QStyledItemDelegate)public:// 自定义绘制逻辑// 设置代理。

佳乐的博客 4018

视觉定位避坑指南:基于双mark点的坐标转换常见错误排查

本文详细解析了工业视觉项目中基于双mark点的坐标转换常见错误及排查方法,涵盖旋转矩阵构建、坐标系原点选择、图像预处理优化等关键环节。通过实战案例和代码示例,帮助工程师避免定位偏差,提升系统精度,特别适用于自动化检测和精密制造场景。

7z8x2c4v6b9的博客 167

QTableView/QTableWidget设置单元格字体颜色及背景色

注:如果界面用QSS文件设置了皮肤,则需在QSS文件中把QTableView/QTableWidget 设置单元格颜色的代码去掉。/*设置字体颜色, 这里设置之后,代码里设置某个单元格的颜色不起作用*/2.QTableWidget设置单元格字体颜色及背景色。1.QTableView设置单元格字体颜色及背景色。

weixin_38368758的博客 3957

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

手把手教你完成YOLOv8 PyQt5和PySide6目标检测界面搭建,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv8 与 PyQt5,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。支持目标检测、目标分割等模型进来检测

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

Qt QTableWidget如何设置单个单元格的边框颜色

大家都知道通过样式表可以设置表格的整体样式: QTableWidget * table = new QTableWidget(this); table->setStyleSheet(“QTableWidget{border-top:1px solid blue; border-left:1px solid blue; border-right:1px solid blue; border-bottom:1px dashed blue;}”); 但如果想设置某个具体单元格的边框样式,这个方法就不适用了。

潮湿的桥 9215

电商行业分析爬虫:抓取行业数据,进行行业分析

电商行业数据分析对于市场研究、竞争分析和商业决策至关重要。通过爬取电商平台的数据,我们可以深入了解市场动态、消费者行为和商品销售情况。本文将介绍如何构建一个电商行业分析爬虫,抓取商品信息、销售数据和用户评价等,并进行数据分析。

u014481728的博客 1628

PyQt5 QTableWidget 表格控件

QTableWidget 继承自 QTableView,QTableWidget 在实际开发中经常使用,建议先学习。QTableWidget 表格中,每个单元格都是 QTableWidgetItem 类的实例对象。QTableWidget 是 Qt 提供的一种表格控件,可以将数据以表格的方式展示给用户。搭建一个空白的窗口,使用面向对象方式,继承自Qwidget,具备窗体的基本功能。仅输入父亲,没有其他参数,只用于初始化,效果见下图。效果展示 生成了一个6行、5列的表格。输入表格的行数、列数和父亲。

weixin_48088847的博客 3986

垂类大模型 研发方向与具体方案调研

领域知识库加上通用大模型,针对通用大模型见过的知识比较少的问题,利用向量数据库等方式根据问题在领域知识库中找到相关内容,再利用通用大模型强大的summarization和qa的能力生成回复,完成本次垂直大模型研发。目前很多企业希望将大模型的能力应用到企业内部当中,但很多通用大模型只是一个预训练模型,其所能回答的知识主要来源于互联网上公开的通用知识库,对于部分垂直领域和企业内部的私有知识库的问答,给出的回答。:垂类大模型的效果与底座性能息息相关,研发垂类大模型第一步就是确定开源大模型解决方案。

风吹落叶的博客 3329

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

PyQt5之QTableWidget表格数据

PyQt5之QTableWidget的基本用法 QTableWidget是Qt程序中常用的显示数据表格的控件,类似于C#中的DataGrid。QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元格数据通过QTableWidgetItem来实现。 一、QTableWidget类中的常用方法 方法 描述 setRowCount(int row) 设置QTableWidget表格控件的行数 setColumnCount(int col) 设置QTableW

qq_44880255的博客 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

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

课程目录视频链接知识点扩充课程重点代码位置完整代码遇到的问题改写效果展示改写注意点改写代码(QTdesigner模式) >>> 点击进入:pyqt5专栏<<< 老师原课件下载地址: 有积分的朋友,支持下我,打赏也OK。 不下载也可以,我每节课会吧代码贴出来 视频链接 P66课时67.扩展的表格控件(QTableWidget) 知识点扩充 参考博客:点击此处 课程重点 代码位置 完整代码 遇到的问题 改写效果展示 改写注意点 改写代码(QTdesign

knocky的博客 7731

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

PyQt5 QTableWidget的显示、添加和删除多行

最近为了写软著,一直在用PyQt5进行开发,但因为本身对PyQt5并不熟悉,所以在写代码的过程中遇到了很多问题,只能在网上疯狂百度找办法,这一篇博客简单总结一下PyQt5中QTableWidget的显示、添加和删除操作的方法。 PyQt5 QTableWidget的显示、添加和删除操作 1. QTableWidget的显示 首先给出我的界面如下,其中红色框就是显示的表格。 显示表格的代码如下...

忆殇D.Rose的博客 2万+

11 PyQt5 控件之QTableWidget

简便控件QTableWidget

小泥人日常 6411

PyQt5中数据表格控件QTableWidget使用方法

PyQt5中数据表格控件QTableWidget使用方法

m0_37302966的博客 3505

你真的会设置表格样式吗?PyQt5 QTableWidget单元格美化终极指南

掌握PyQt5 QTableWidget的单元格样式设置技巧,轻松实现表格美化与交互提升。涵盖字体、颜色、对齐及自定义渲染等核心方法,适用于数据展示、报表界面等场景。告别单调表格,打造专业级GUI应用,值得收藏。

LiteCode的博客 1192

PyQt5中动态设置QTableWidget表格添加数据,并且设置表格的行高,列宽

1、首先实例化QTableWidget对象, self.tableWidget = QtWidgets.QTableWidget(self) 2、设计表格的行数和列数,以及绝对定位,当然你也可以根据自己的需求进行排版 self.tableWidget.setGeometry(QtCore.QRect(40, 100, 447, 268)) self.tableWidget.setObje...

水月灯花的博客 2万+

PyQt5控件学习之-QTableWidget

学习PyQt5中的QTableWidget的使用

~~信我有鬼~~ 6024

PyQt5使用QTableWidget分页功能的实现

本文使用PyQt的版本为5.11.3,其他版本的兼容性测试 使用表格开发时,想加入一个页码选择操作的控件 UI界面与逻辑分离。 实例化MainWindow中加入table_widget,表格调用setPageController方法添加页码控制器 效果如下图所示: 并且带一个跳转的按钮。 完整代码,复制可直接运行 # _*_ coding:utf-8 _*_ # author: zizle #...

zizle_lin的博客 1万+

PyQt5—高级界面控件之表格和树

表格和树高级界面控件一、表格和树1、QTableView 高级界面控件 一、表格和树 表格和树的作用就是在一个控件中有规律得呈现更多的数据,因此 PyQt5 提供了表格结构和树形结构的控件类。 1、QTableView QTableView 用于将数据(数组、列表)以表格的形式呈现在界面中;QTableView 类中可以使用自定义数据模型来显示内容,通过 setModel 绑定数据源。 QT...

御承扬的博客 4235

从入门到精通:PyQt5 QTableWidget单元格样式控制完全手册

掌握PyQt5 QTableWidget的单元格样式控制方法,轻松实现表格界面美化与交互优化。涵盖字体、颜色、对齐等样式设置,适用于桌面应用开发中的数据展示场景。支持代码动态配置与样式表统一管理,提升界面一致性与维护效率。实用技巧值得收藏。

FuncWander的博客 1075
上一篇: 如何用元类在类创建时动态添加方法?这4个实战案例让你彻底明白
下一篇: 【多线程编程核心技巧】:掌握条件变量超时机制的5大实战场景
PixelStream
博客等级 码龄1年 177粉丝 2182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值