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

PyQt5之表格控件QTableWidget使用详解 - 创建、布局、设置表格高度、宽度、表头等各种样式及表格数据的填写与改动的接收 本文通过实例列举了QTableWidget的常用功能与设置方法,包括设置表格样式(表头、宽、高、颜色、冻结行列和数据的填充,增、删、改查等常用数据操作,实现一文基本解决QTableWidget的所有问题,建议先收藏,再慢慢看,遇到项目难题可进行备查。 阅读详情

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

在开发桌面应用时,表格是展示结构化数据的核心组件。PyQt5 的 QTableWidget 功能强大,但默认样式往往显得单调。通过自定义单元格样式,不仅能提升界面美观度,还能增强用户体验。

设置字体与文本对齐方式

每个单元格可通过 QTableWidgetItem 设置独立的字体、颜色和对齐方式。以下代码演示如何居中显示文本并设置加粗字体:
# 创建单元格并设置居中对齐
item = QTableWidgetItem("示例数据")
item.setTextAlignment(Qt.AlignCenter)
item.setFont(QFont("Arial", 10, QFont.Bold))
table.setItem(0, 0, item)

改变背景与文字颜色

通过调用 setBackgroundColor() 和 setTextColor() 方法,可轻松定制视觉风格:
  • item.setBackground(QColor(240, 240, 255)) —— 设置淡蓝色背景
  • item.setForeground(QBrush(QColor(0, 0, 0))) —— 设置黑色文字

使用样式表统一外观

对于整体样式控制,推荐使用 Qt 样式表(StyleSheet)。以下规则将应用于整个表格:
table.setStyleSheet("""
    QTableWidget {
        gridline-color: #cccccc;
        selection-background-color: #a0d8ef;
    }
    QTableWidget::item {
        padding: 5px;
    }
""")
该样式表定义了网格线颜色、选中项背景及内边距,使表格更易读。

行高与列宽的精细化控制

手动调整尺寸可避免内容挤压:
方法说明
table.setRowHeight(0, 30)设置第一行为30像素高度
table.setColumnWidth(1, 150)设置第二列为150像素宽度
结合上述技巧,开发者能构建出既专业又美观的数据展示界面。

第二章:QTableWidget单元格样式基础配置

2.1 理解QTableWidget的样式体系与渲染机制

样式控制层级
QTableWidget的外观由Qt样式表(QSS)和视图-模型架构共同决定。样式优先级遵循:内联样式 > QSS规则 > 默认系统样式。通过setStyleSheet()可统一设置表格、单元格、表头的视觉表现。
渲染流程解析
表格渲染时,QTableWidget将数据模型与视图分离处理。每个单元格由代理(Item Delegate)负责绘制,可通过setItemDelegate()自定义渲染逻辑。
table->setStyleSheet(
    "QTableWidget { gridline-color: #ccc; }"
    "QHeaderView::section { background: #f0f0f0; border: none; }"
    "QTableWidget::item { padding: 5px; }"
);
上述QSS代码定义了网格线颜色、表头背景及单元格内边距。其中gridline-color控制分隔线,QHeaderView::section针对列标题样式优化,提升整体可读性。
性能影响因素
  • 频繁调用update()触发重绘,应避免在循环中执行
  • 启用双缓冲可减少闪烁:table->setAlternatingRowColors(true)
  • 大数据量下建议使用QTableView + 自定义模型以提升效率

2.2 使用QTableWidgetItem设置字体、颜色与对齐方式

在Qt的表格界面开发中,`QTableWidgetItem` 提供了丰富的外观控制接口,可用于精细定制单元格的显示样式。
设置字体样式
通过 `setFont()` 方法可为单元格设置特定字体。例如:
QFont font("Microsoft YaHei", 10, QFont::Bold);
item->setFont(font);
该代码将单元格字体设为微软雅黑,10号加粗。`QFont` 构造函数参数依次为字体族、大小和字重。
调整文字颜色与对齐
使用 `setForeground()` 设置文字颜色,接受 `QBrush` 对象:
item->setForeground(QBrush(Qt::red));
对齐方式通过 `setTextAlignment()` 控制,参数使用 Qt 的对齐标志组合,如:
item->setTextAlignment(Qt::AlignCenter | Qt::AlignVCenter);
表示水平与垂直居中对齐。常用值包括 `AlignLeft`、`AlignRight` 和 `AlignVCenter`。

2.3 通过setBackground和setForeground控制背景与前景色

在Swing图形界面开发中,组件的视觉表现可通过颜色属性进行定制。`setBackground` 和 `setForeground` 方法分别用于设置组件的背景色与前景色(如文字颜色),提升用户界面可读性与美观度。
常用颜色设置方法
  • setBackground(Color):设置组件背景色
  • setForeground(Color):设置文本等前景元素颜色
代码示例
JLabel label = new JLabel("高亮文本");
label.setBackground(Color.YELLOW);
label.setForeground(Color.RED);
label.setOpaque(true); // 必须设置为true才能显示背景色
上述代码中,setOpaque(true) 是关键步骤,否则Swing默认透明处理背景,颜色将不生效。此机制适用于JLabel、JButton等轻量级组件。

2.4 利用setTextAlignment实现精准文本对齐布局

在Android开发中,`setTextAlignment()` 方法是控制视图内文本对齐方式的关键API。它适用于TextView及其子类,能够在不同布局环境下精确调整文本的水平对齐行为。
支持的对齐类型
  • TEXT_ALIGNMENT_GRAVITY:根据View的gravity属性对齐
  • TEXT_ALIGNMENT_TEXT_START:文本起始位置对齐(如左对齐或右对齐)
  • TEXT_ALIGNMENT_CENTER:居中对齐
  • TEXT_ALIGNMENT_VIEW_END:视图末尾对齐
代码示例与参数解析
TextView textView = findViewById(R.id.text_view);
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
上述代码将文本设置为在视图中居中对齐。setTextAlignment() 接收一个整型常量,决定文本相对于父容器的对齐策略,无需依赖外部布局参数即可实现动态对齐控制。

2.5 实践:构建高可读性数据表格的基础样式

为了让数据表格在视觉上更清晰易读,首先应确立基础的排版规范。合理的字体大小、行高与内边距能显著提升可读性。
基础CSS样式设计

.table {
  width: 100%;
  border-collapse: collapse;
  font-family: Arial, sans-serif;
  font-size: 14px;
  line-height: 1.6;
}

.table th,
.table td {
  padding: 12px 15px;
  text-align: left;
  border-bottom: 1px solid #ddd;
}
上述代码中,border-collapse: collapse 消除边框间隙,padding 提供单元格内留白,line-height 增强行间呼吸感。
视觉层次优化
  • 表头使用深色背景与白色文字突出区分
  • 隔行变色提升横向阅读连贯性
  • 鼠标悬停高亮当前行
通过结构化样式与渐进增强策略,实现清晰、稳定且跨设备友好的表格展示效果。

第三章:基于Qt Style Sheet的深度美化

3.1 掌握QSS语法在QTableWidget中的应用范围

QSS(Qt Style Sheets)为QTableWidget提供了强大的样式定制能力,允许开发者通过类CSS语法控制表格的外观表现。
支持的样式属性
QTableWidget可针对整体背景、单元格边框、字体颜色等进行样式设置。常用属性包括:
  • background-color:设置背景色
  • gridline-color:定义网格线颜色
  • selection-background-color:选中项背景色
典型QSS代码示例
QTableWidget {
    background-color: #f0f0f0;
    gridline-color: #cccccc;
    selection-background-color: #4a90e2;
    font-size: 12px;
}
QTableWidget::item {
    padding: 4px;
    color: #333333;
}
上述样式设置了表格整体背景为浅灰,网格线为灰色,选中项为蓝色,并统一了字体与内边距。其中QTableWidget::item专门针对单元格内容进行细化控制,提升视觉一致性。

3.2 使用setStyleSheet定制选中态、交替行颜色与边框样式

通过 `setStyleSheet` 方法,可以灵活地对 Qt 的 `QTableView` 或 `QTableWidget` 进行外观美化,尤其适用于定制选中态、奇偶行颜色以及边框样式。
设置选中项高亮样式
QTableView::item:selected {
    background-color: #4a90e2;
    color: white;
}
该规则定义了选中单元格的背景色和文字颜色,提升用户交互反馈的可视性。
启用交替行颜色
  • 需先调用 tableView->setAlternatingRowColors(true);
  • 再通过样式表指定颜色:
QTableView {
    alternate-background-color: #f0f8ff;
    background-color: white;
}
alternate-background-color 仅在启用交替模式后生效,使数据行更易区分。
自定义边框样式
属性说明
border设置整体边框线型与颜色
gridline-color控制表格网格线颜色
例如:
QTableView {
    border: 2px solid #ccc;
    gridline-color: #ddd;
}
可显著增强表格边界清晰度与整体视觉结构。

3.3 实践:打造现代化扁平化风格的数据表格界面

在现代Web应用中,数据表格不仅是信息展示的核心组件,更是用户体验的关键环节。采用扁平化设计风格能有效提升界面的清晰度与可读性。
设计原则
  • 去除冗余边框和阴影,保留必要的分隔线
  • 使用高对比度文字与浅色背景提升可读性
  • 行间交替使用极淡灰(#f9f9f9)增强视觉节奏
核心HTML结构
<table class="flat-table">
  <thead>
    <tr><th>姓名</th><th>部门</th><th>状态</th></tr>
  </thead>
  <tbody>
    <tr><td>张三</td><td>技术部</td><td>在线</td></tr>
  </tbody>
</table>
该结构通过语义化标签明确表头与数据区域,便于无障碍访问和样式控制。
视觉优化建议
配合CSS移除传统边框,改用border-bottom: 1px solid #e0e0e0仅保留底部线条,实现轻量化视觉分割。

第四章:高级自定义绘制与交互优化

4.1 继承QStyledItemDelegate实现自定义单元格绘制

在Qt的模型-视图架构中,`QStyledItemDelegate` 提供了灵活的机制来自定义单元格的外观与编辑行为。通过继承该类并重写 `paint()` 方法,开发者可以完全控制单元格的绘制逻辑。
核心重写方法
关键在于重写 `paint()` 和 `sizeHint()` 方法,以实现视觉定制:
void CustomDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
                          const QModelIndex &index) const {
    QStyleOptionViewItem opt = option;
    initStyleOption(&opt, index);

    // 自定义背景色
    if (index.row() % 2 == 0)
        painter->fillRect(option.rect, QColor(240, 249, 255));
    
    // 调用基类完成标准绘制
    QStyledItemDelegate::paint(painter, opt, index);
}
上述代码为偶数行设置浅蓝色背景,增强了数据可读性。`initStyleOption()` 确保获取原始显示数据,而 `QPainter` 提供底层绘图能力。
应用场景
  • 高亮特定数据行或列
  • 嵌入图标或进度条图形元素
  • 统一UI风格以匹配整体应用主题

4.2 在单元格中嵌入控件(如进度条、按钮)提升交互性

在现代前端表格组件中,通过在单元格内嵌入交互式控件可显著提升用户体验。例如,使用按钮触发行级操作,或通过进度条直观展示任务完成度。
常用嵌入控件类型
  • 按钮:用于执行编辑、删除等行操作
  • 进度条:可视化展示数值比例
  • 开关:快速切换布尔状态
Vue 中的单元格渲染示例

<template #cell-progress="{ row }">
  <el-progress :percentage="row.progress" />
</template>
上述代码通过作用域插槽将 `el-progress` 组件注入表格单元格,`row.progress` 为绑定的数据字段,值范围为 0–100,动态反映任务进度。
适用场景对比
控件类型适用场景交互优势
按钮行操作触发操作直达,减少跳转
进度条状态可视化信息一目了然

4.3 处理鼠标悬停与焦点状态下的动态视觉反馈

在现代前端交互设计中,鼠标悬停(hover)与焦点(focus)状态的视觉反馈直接影响用户体验。合理运用 CSS 伪类可实现平滑的动态效果。
基础样式定义
通过 :hover 和 :focus 伪类控制元素状态变化:
.btn {
  background-color: #007bff;
  color: white;
  padding: 10px 20px;
  border: none;
  border-radius: 4px;
  transition: all 0.3s ease;
}

.btn:hover {
  background-color: #0056b3;
  cursor: pointer;
}

.btn:focus {
  outline: 2px solid #00c1ec;
  box-shadow: 0 0 8px rgba(0, 123, 255, 0.4);
}
上述代码中,transition 属性确保背景色与阴影变化具备缓动动画。:focus 样式增强键盘可访问性,符合无障碍标准。
状态组合优化
  • 使用 :focus-visible 区分鼠标与键盘聚焦
  • 避免仅依赖颜色传递信息
  • 确保对比度满足 WCAG 至少 3:1

4.4 实践:开发具备交互反馈的智能监控数据表

在构建智能监控系统时,数据表不仅需展示实时指标,还应支持用户交互与即时反馈。通过结合前端响应逻辑与后端事件推送机制,可实现动态更新与操作回执。
核心功能设计
主要包含:
  • 实时数据刷新:基于WebSocket推送最新监控值
  • 点击反馈:用户操作后显示加载状态与结果提示
  • 异常高亮:自动标记越界数值并触发警示动画
关键代码实现

// 启动WebSocket监听数据流
const socket = new WebSocket('ws://monitor.example.com/data');
socket.onmessage = function(event) {
  const data = JSON.parse(event.data);
  updateTableCell(data.id, data.value); // 更新对应单元格
  if (data.alert) triggerVisualFeedback(data.id); // 触发视觉反馈
};
上述代码建立持久连接,接收服务端推送的监控数据。当接收到新数据时,调用updateTableCell刷新界面,并根据alert标志启动警示反馈,提升运维人员响应速度。

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

性能优化策略
在高并发系统中,数据库查询往往是瓶颈所在。使用连接池可显著减少建立连接的开销。以下是一个使用 Go 的 database/sql 配置连接池的示例:

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
    log.Fatal(err)
}
// 设置最大空闲连接数
db.SetMaxIdleConns(10)
// 设置最大打开连接数
db.SetMaxOpenConns(100)
// 设置连接最大生命周期
db.SetConnMaxLifetime(time.Hour)
安全配置清单
生产环境部署时,必须遵循最小权限原则。以下是关键安全措施的检查列表:
  • 禁用不必要的服务端口,仅开放必需接口
  • 使用 HTTPS 并启用 HSTS 头部
  • 定期轮换密钥和证书
  • 对用户输入进行严格校验与转义
  • 启用 WAF(Web 应用防火墙)防护常见攻击
监控与告警机制
有效的可观测性体系依赖于日志、指标和追踪三位一体。推荐使用 Prometheus 收集指标,并通过 Grafana 展示。关键指标应包括:
指标名称采集频率告警阈值
HTTP 5xx 错误率每15秒>1%
请求延迟 P99每10秒>500ms
数据库连接使用率每30秒>80%
[Client] → HTTPS → [API Gateway] → [Service Mesh] → [Microservice] ↓ [Prometheus] ← (metrics) ↓ [Alertmanager] → Email/SMS
PyQt5 使用自定义ToolTip解决QTableWidget数据显示不全问题 目录 问题描述 解决方案 实现效果 问题描述 最近在使用PyQT5做一个项目,用到最多的控件是QTableWidget,使用很方便,但是也存在很多问题,比如下面这种: 数据太长,使用QTableWidget默认的列宽分配会导致显示不全,数据以"XXX..."的形式呈现,很不利于用户阅读。一个可能的解决办法是采用用户可以手动调整的方式来显示数据。效果如下图: 使用的代码是... 阅读详情

相关推荐

用PyQt实现表格显示功能

QTableView提供了多种与表格相关的属性设置,其中一个非常常用的设置就是showGrid属性。这个属性控制着表格中网格线的显示和隐藏,它的默认值为True,即显示网格线。通过这个简单的例子,我们了解了如何使用PyQt和QTableView来展示表格数据,并且掌握了控制showGrid属性的方法。在实际开发中,我们可以根据需求对表格进行更加丰富的设置,让丰富的表格来展示数据。我们可以通过以下代码来创建一个简单的表格,并设置showGrid属性为False。运行后,我们可以看到一张不带网格线的表格。

与其临渊羡鱼,不如退而结网 1357

PyQt5 QTableWidget 表格控件

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

weixin_48088847的博客 3986

PyQt 绘制表格

在上述代码中,我们创建了一个名为 MainWindow 的主窗口,并设置了窗口的标题和大小。然后,我们定义了一个包含表格数据的二维列表 table_data,并创建了一个 TableModel 对象来作为数据模型。在上述代码中,我们通过重写 rowCount() 和 columnCount() 方法来指定表格的行数和列数,而 data() 方法则用于提供单元格的数据内容。这个模型类负责提供表格的数据和属性。现在,我们可以创建一个主窗口,并在主窗口中添加一个 QTableView 控件来显示表格数据。

PgosOcaml的博客 501

PyQt QTableWidget 表格控件的使用

PyQT开发图形界面应用时,用 QTableWidget 表格控件可用表格方式显示从列表、数据库, excel 等读出的二维数据。如果你想用表格方式显示自已建立的 Model 模型数据,请采用QTableView类。

Python技术探索 8768

PINN内嵌物理知识神经网络入门及文献总结

内嵌物理知识深度学习方法(PINN)已经成功用于解决各类科学计算问题,其本质是将物理先验知识嵌入神经网络训练中,将一个求解PDE的问题转化为一个优化问题。这篇博客主要记录PINN相关论文

山里娃的博客 7万+

视频帧插学习(三):ema-vfi代码拆解和分析

video interp EMA-VFI

mikhailbran的博客 708

揭秘PyQt5表格美化技术:如何轻松实现QTableWidget单元格高级样式

掌握PyQt5 QTableWidget的单元格样式设置技巧,轻松实现表格界面美化。涵盖字体、颜色、对齐等自定义样式应用,适用于数据展示与桌面应用开发,提升界面专业度与用户体验。方法简单高效,值得收藏。

Algorift的博客 894

Prometheus常用配置介绍

除了 scrape_configs 外,上部还有 global 和 rule_files 部分, 其中 global 中 是 全 局 参 数 , scrape_interval 指 定 全 局 默 认 的 时 间 间 隔 , evaluation_interval 指定告警规则校验的时间间隔,rule_files 指定了告警规 则文件的位置名称。• annotations(注释):它们被用于存储更长的其他信息,例如警报描述 或者链接,注释值也可以被模板化。• alert:告警的名称。

weixin_42886699的博客 2260

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

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

FuncWander的博客 1075

伪距单点定位推导+DOP值分析(附matlab仿真代码)

伪距单点定位公式推导、DOP值分析与matlab仿真分析

shannanshouyin的博客 2513

2025年从零开始:构建你的首个ComfyUI工作流-ComfyUI入门教程

然而,由于它拥有众多的插件节点,以及较为复杂的操作流程,学习起来相对困难。以前面搭建的文生图工作流为例,首先点击功能区的【保存】,然后你的浏览器会出来一个弹窗,你可以进行文件命名,点击确定后浏览器会下载该文件,也就是带“json”后缀的文件,这样我们的工作流就打包成一份文件了。思考一下前面说的,节点是不是需要下载安装才能使用,而我们复用别人的工作流,他用的节点你不一定下载了,因为目前有600多个节点,你不可能全部下载了吧,所以我们日后使用别人的工作流,你会经常出现这样的问题。

weixin_59486588的博客 1455

5种高效方式提升QTableWidget颜值:PyQt5单元格样式应用秘籍

掌握PyQt5 QTableWidget的单元格样式设置技巧,提升界面美观与用户体验。介绍5种高效方法,涵盖字体、颜色、对齐及自定义渲染,适用于数据展示与交互场景。代码简洁易用,值得收藏。

ByteGlow的博客 846

GOM Correlate拉伸试验后处理操作

本文描述了使用GOM Software 2022对拉伸试样进行后处理的操作,包括设置检测点、引伸计、输出应变数据到表格、输出报告为视频等

qq_45008924的博客 4664

使用QTableWidget在Python界面中画表格

本文描述PyQt5的QTableWidget控件的基本使用方法和效果,界面实现建议还是desiger设计工具实现,同时使用业务和逻辑相分离的方式编写程序,都揉在一块后面程序就不好维护,毕竟没有谁的工具实现是可以一蹴而就的,还是要考虑可维护性。setSpan(0,3,2,1)函数中(0,3)会指定到单元格第1行第4列(下标都是从0开始计算),(2,1)分别表示合并2行(把下一行合并了),1列(1列,列其实没有合并)。默认情况下表格中的字符串是可以更改的,比如双击一个单元格,就可以修改运来的内容。

weixin_45832791的博客 2846

第八节:Orin NX 修改pinmux

读SPI1对应的寄存器,看对应的GPIO口是否被复用为SPI功能。说明GPIO口的功能已经被复用为SPI。烧录或者命令行烧录,都是根据。这里我们把文件统一命名成。文件,Orin NX的。测试SPI功能,基于。

孤独旅客的博客 792

【ChatGPT】实用 Prompt 指令大全 —— 一文教你如何更好地挖掘 GPT 的价值

ChatGPT 是由 OpenAI 开发的一种先进的大型语言生成模型,能够理解和生成准确、自然且连贯的文本。文本生成数据分析内容审核语义理解自然语言推理以及其他众多任务ChatGPT是一种基于GPT-3.5架构的大型语言模型,由OpenAI公司开发。该模型在自然语言处理领域有着广泛的应用,可以用于文本生成、文本分类、情感分析、问答系统等任务。本文将从模型的架构、训练方式、优缺点等方面对ChatGPT进行详细介绍。一、模型架构。

AI天才研究院 2万+

为什么你的表格总是丑?PyQt5 QTableWidget样式常见坑及修复方案

解决PyQt5表格界面丑陋问题,掌握QTableWidget的单元格样式定制方法。涵盖颜色、字体、对齐等常见样式设置,适用于桌面应用开发,提升界面美观性与用户体验。修复样式不生效、选中色异常等典型问题,值得收藏。

CodeTrick的博客 876

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

你真的会用QTableWidget吗?深度解析PyQt5表格单元格样式定制技巧

掌握PyQt5 QTableWidget的单元格样式定制技巧,轻松实现表格界面美化与交互优化。涵盖字体、颜色、对齐方式设置及动态样式调整,适用于数据展示、报表系统等场景。方法简单高效,提升用户体验,值得收藏。

PixelGlow的博客 336

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

深度学习工具包 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")

PyQt5开发之QTableWidget表头自定义与美化(附源代码下载)

文章目录前言本文您将收获设计图实现效果图实现效果图(Gif动图)源码下载 前言 博主进行在做PyQt5软件开发的美化工作,其中遇到一个比较困难的问题是QTableWidget控件的样式设置与自定义。众所周知,PyQt5是从Qt5迁移过来了,网上关于QTableWidget的PyQt5样式设置的资料比较零散。 笔者经过一个下午和晚上的时间,查阅了大量资料(包括Python版和大量C++版的资料),终于了解了QTableWidget这个控件的更多细节。 为了帮助遇到与博主类似问题的小伙伴,节省大量查询资料的时

浅若清风cyf的博客 5039

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

PyQt5—高级界面控件(1)

表格和树高级界面控件一、表格和树1、QTableView2、QListView3、QTableWidget3.1、基本用法(1)设置表格头(2)设置表格头为伸缩模式(3)设置表格为只读模式(4)整行选中(5)设置行高列宽(6)表头显示或隐藏(7)在单元格中放置控件(8)快速定位指定行3.2、设置单元格(1)设置单元格文本颜色(2)字体加粗(3)单元格排序方式(4)单元格文本对齐方式(5)合并单元格...

御承扬的博客 5446

【PyQt5界面美化必学】:彻底搞懂QTableWidget单元格背景、字体与对齐样式

掌握PyQt5 QTableWidget的单元格样式设置方法,轻松实现背景色、字体与对齐方式自定义。适用于数据展示界面美化,提升用户体验。通过代码灵活控制样式,操作简单高效,值得收藏。

AlgoPerch的博客 345

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

掌握PyQt5 QTableWidget的单元格样式设置方法,轻松打造专业级表格界面。涵盖字体、颜色、对齐等自定义样式应用,适用于数据展示、报表系统等场景,提升界面美观与用户体验。方法灵活,易于集成,值得收藏。

PixelStream的博客 464

动态样式设置全解析,轻松实现PyQt5表格单元格个性化显示效果

掌握PyQt5 QTableWidget的单元格样式动态设置方法,轻松实现表格内容个性化显示。适用于数据展示、报表界面等场景,通过样式表和编程方式灵活控制字体、颜色、对齐等效果,提升UI美观性与用户体验,值得收藏。

LearnPlex的博客 306

揭秘PyQt5表格样式难题:如何精准控制QTableWidget每个单元格外观

轻松掌握PyQt5 QTableWidget的单元格样式设置难题,精准控制每个单元格外观。适用于自定义表格界面、数据可视化等场景,支持字体、颜色、对齐方式等个性化配置,提升界面美观与用户体验。方法简单高效,值得收藏。

LogicWander的博客 435

【PyQt5 QTableWidget样式定制秘籍】:掌握单元格样式的5大核心技巧

掌握PyQt5 QTableWidget的单元格样式定制方法,解决界面美化难题。涵盖字体、颜色、对齐等5大核心技巧,适用于数据展示与交互界面开发,提升用户体验。代码简洁易扩展,值得收藏。

SimCompile的博客 322

QTableWidget跨行跨列合并全解析,彻底掌握PyQt5表格布局核心技术

掌握PyQt5的表格布局难题,本文深入解析QTableWidget单元格合并的跨行跨列实现方法,涵盖mergeCells使用技巧、适用场景与性能优化要点。提供完整代码示例和避坑指南,助你高效构建复杂表格界面,值得收藏。

CompiLume的博客 717
上一篇: 【高效Python编程必修课】:掌握生成器表达式的惰性求值,告别内存浪费
下一篇: Plotly动画渲染延迟怎么办?精准控制帧duration的4种高效方法
LiteCode
博客等级 码龄1年 146粉丝 2019原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值