【PyQt5进阶必备技能】:如何在QTableWidget中优雅地集成右键菜单?

第一章:PyQt5 QTableWidget 添加右键菜单

在开发桌面应用程序时,为表格控件添加上下文菜单(右键菜单)是一种常见的交互设计。PyQt5 的 QTableWidget 支持通过信号与槽机制实现自定义右键菜单,从而提升用户操作效率。

启用上下文菜单策略

首先需要设置表格的上下文菜单策略,使其响应右键点击事件。可以通过调用 setContextMenuPolicy() 方法来实现。
from PyQt5.QtWidgets import QTableWidget, QAction, QMenu

# 设置上下文菜单策略
table_widget = QTableWidget(5, 3)
table_widget.setContextMenuPolicy(Qt.CustomContextMenu)

绑定右键信号并创建菜单

使用 customContextMenuRequested 信号连接到处理函数,在该函数中创建并显示右键菜单。
# 连接信号
table_widget.customContextMenuRequested.connect(show_context_menu)

def show_context_menu(pos):
    context_menu = QMenu(table_widget)
    
    # 创建菜单项
    action_copy = QAction("复制", table_widget)
    action_clear = QAction("清空", table_widget)
    
    # 绑定动作
    action_copy.triggered.connect(lambda: print("执行复制"))
    action_clear.triggered.connect(lambda: table_widget.clearContents())
    
    # 添加到菜单并显示
    context_menu.addAction(action_copy)
    context_menu.addAction(action_clear)
    context_menu.exec_(table_widget.mapToGlobal(pos))
上述代码中,mapToGlobal(pos) 将表格内的坐标转换为屏幕坐标,确保菜单在正确位置弹出。每个 QAction 可以绑定独立逻辑,例如数据复制、行删除或单元格编辑等。
  • 设置 ContextMenuPolicy 为 CustomContextMenu
  • 连接 customContextMenuRequested 信号至处理函数
  • 在处理函数中构建 QMenu 并添加功能项
  • 调用 exec_() 显示菜单
方法/属性作用说明
setContextMenuPolicy()设定控件的上下文菜单行为模式
customContextMenuRequested右键点击时发出的信号
QMenu.exec_()在指定位置弹出菜单

第二章:QTableWidget与事件处理机制解析

2.1 QTableWidget核心功能与上下文菜单策略

基础功能概述
QTableWidget 是 Qt 中用于展示和编辑二维数据的核心组件,支持行列管理、单元格自定义以及数据实时更新。通过内置的信号与槽机制,可轻松实现用户交互响应。
上下文菜单集成
为提升用户体验,常在表格上绑定右键上下文菜单。关键步骤包括启用上下文菜单策略并连接自定义菜单:
tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(tableWidget, &QTableWidget::customContextMenuRequested,
        this, &MainWindow::showContextMenu);
上述代码将上下文菜单请求信号映射到处理函数 showContextMenu,参数为右键位置。随后可在该函数中构建 QMenu 并执行。
  • setContextMenuPolicy 设置策略为自定义触发
  • customContextMenuRequested 提供精确的坐标事件
  • 动态添加菜单项可基于选中行状态控制可见性

2.2 右键菜单触发原理:contextMenuEvent与信号机制

事件捕获与处理流程
在Qt框架中,右键菜单的触发依赖于 contextMenuEvent() 虚函数。当用户在控件上点击右键时,系统会生成一个 QContextMenuEvent 对象,并调用对应控件的该函数。

void MyWidget::contextMenuEvent(QContextMenuEvent *event) {
    QMenu menu;
    QAction *saveAction = menu.addAction("保存");
    connect(saveAction, &QAction::triggered, this, &MyWidget::onSave);
    menu.exec(event->globalPos());
}
上述代码重写了 contextMenuEvent,通过事件对象的 globalPos() 获取鼠标全局坐标,在该位置弹出菜单。信号机制使得 QAction::triggered 可绑定至具体槽函数,实现行为解耦。
信号与槽的动态绑定
使用信号槽机制可实现菜单项与功能逻辑的松耦合。每个 QAction 触发时发出信号,由 QObject 框架调度至注册的槽函数执行。

2.3 自定义菜单类的设计与事件重写实践

在复杂的应用界面开发中,标准菜单组件往往无法满足个性化交互需求。通过继承原生菜单类并重写关键事件方法,可实现高度定制的功能逻辑。
核心设计思路
  • 继承系统菜单类以保留基础功能
  • 重写鼠标点击、键盘导航等事件响应机制
  • 注入自定义行为如日志记录、权限校验
事件重写示例
class CustomMenu(QMenu):
    def mousePressEvent(self, event):
        # 拦截左键单击,添加自定义处理
        if event.button() == Qt.LeftButton:
            print(f"菜单项 {self.title()} 被点击")
            self.custom_action()  # 触发扩展逻辑
        super().mousePressEvent(event)
        
    def custom_action(self):
        # 自定义业务逻辑
        pass
上述代码中,mousePressEvent 被重写以插入行为监控,同时保留父类默认行为。通过调用 super() 确保原有菜单展开逻辑不受影响,实现了功能增强与兼容性的统一。

2.4 基于setContextMenuPolicy的菜单启用方式

在Qt框架中,`setContextMenuPolicy` 是控制控件上下文菜单触发行为的核心方法。通过设置不同的策略枚举值,可精确控制菜单的显示时机与交互方式。
常用上下文菜单策略
  • Qt::DefaultContextMenu:使用默认上下文菜单,常用于支持富文本的控件。
  • Qt::CustomContextMenu:通过 `customContextMenuRequested` 信号自定义菜单。
  • Qt::NoContextMenu:禁用上下文菜单。
  • Qt::ActionsContextMenu:将控件的Action直接显示为菜单项。
代码示例与分析
QWidget *widget = new QWidget();
widget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(widget, &QWidget::customContextMenuRequested,
        [=](const QPoint &pos) {
            QMenu menu;
            menu.addAction("复制");
            menu.addAction("粘贴");
            menu.exec(widget->mapToGlobal(pos));
        });
上述代码将控件的上下文菜单策略设为自定义模式,当用户右键点击时触发 `customContextMenuRequested` 信号,并在指定位置弹出菜单。`mapToGlobal(pos)` 将局部坐标转换为全局屏幕坐标,确保菜单在正确位置显示。

2.5 菜单显示位置控制与坐标转换技巧

在复杂UI系统中,菜单的精准定位依赖于坐标转换机制。浏览器默认使用视口坐标系,而弹出菜单常需基于触发元素的位置进行相对定位。
坐标转换基础
通过 getBoundingClientRect() 获取元素相对于视口的位置,再结合滚动偏移量,可精确计算目标坐标。

const button = document.getElementById('menu-trigger');
const rect = button.getBoundingClientRect();
const scrollTop = window.pageYOffset;
const top = rect.top + scrollTop + button.offsetHeight;
const left = rect.left + window.pageXOffset;
上述代码计算出菜单应显示的绝对位置,top 为按钮底部下方,left 对齐按钮左侧,避免跨屏问题。
多层级容器适配
当菜单嵌套在滚动容器或变换容器中时,需递归计算累积的 offset 与 transform 偏移,确保坐标一致性。
  • 使用 offsetParent 遍历定位祖先
  • 结合 getComputedStyle 解析 transform 矩阵
  • 优先使用 position: fixed 脱离复杂布局影响

第三章:QMenu与动作系统的构建

3.1 使用QAction创建可交互菜单项

在Qt中,QAction 是构建图形用户界面交互功能的核心类之一,常用于菜单和工具栏中实现可响应的命令操作。
创建基本QAction
QAction *openAction = new QAction("打开文件", this);
openAction->setShortcut(QKeySequence::Open);
connect(openAction, &QAction::triggered, this, &MainWindow::openFile);
上述代码创建了一个带有文本标签“打开文件”的菜单项,设置其快捷键为系统默认的打开快捷键(如Ctrl+O),并通过connect将触发信号绑定到自定义槽函数openFile上,实现点击后执行具体逻辑。
添加到菜单
  • 通过QMenu::addAction()方法可将QAction加入菜单;
  • 支持图标、快捷键、状态栏提示等丰富属性设置;
  • 多个界面组件可共享同一QAction,保证行为一致性。

3.2 绑定槽函数实现菜单行为响应

在PyQt应用中,菜单项的交互响应依赖于信号与槽机制。通过将菜单动作(QAction)的触发信号连接到指定的槽函数,即可实现用户点击时执行对应逻辑。
信号与槽的绑定过程
使用triggered.connect()方法将动作信号与槽函数关联:
save_action = QAction("保存", self)
save_action.triggered.connect(self.on_save_triggered)

def on_save_triggered(self):
    # 执行保存逻辑
    print("执行文件保存操作")
上述代码中,on_save_triggered为自定义槽函数,当用户点击“保存”菜单项时被调用。参数说明:triggered是QAction发出的标准信号,connect()负责建立与处理函数的绑定关系。
多动作统一管理
可通过列表集中管理多个动作,提升代码可维护性:
  • 定义功能相关的QAction实例
  • 批量绑定至各自的槽函数
  • 利用lambda表达式传递额外参数

3.3 动态生成菜单项与条件显示逻辑

在现代前端架构中,菜单系统需根据用户权限和角色动态构建。通过解析后端返回的路由元信息,可实现菜单项的按需渲染。
基于权限的菜单过滤
  • 从用户令牌中提取角色标识
  • 匹配路由表中的 meta.roles 字段
  • 递归遍历路由生成可见菜单
function generateMenus(routes, roles) {
  return routes.filter(route => {
    if (route.meta?.roles) {
      return route.meta.roles.some(role => roles.includes(role));
    }
    return true;
  }).map(route => ({
    name: route.name,
    path: route.path,
    visible: route.meta?.visible !== false
  }));
}
该函数接收完整路由表与用户角色数组,筛选出符合访问权限的条目,并保留其展示控制逻辑。
条件渲染策略
场景实现方式
管理员专属入口v-if="hasRole('admin')"
功能灰度发布v-if="flags.includes('new-menu')"

第四章:右键菜单的高级集成应用

4.1 根据选中单元格动态调整菜单内容

在现代电子表格应用中,用户期望上下文菜单能根据当前选中单元格的内容类型智能调整。例如,选中日期单元格时应显示“格式化日期”选项,而选中公式单元格时则提供“追踪引用”功能。
实现机制
通过监听单元格选择事件,获取其数据类型与元信息,动态渲染菜单项:
spreadsheet.on('cellSelect', (cell) => {
  const menuItems = [];
  if (cell.isDate) {
    menuItems.push({ label: '格式化日期', action: 'formatDate' });
  }
  if (cell.hasFormula) {
    menuItems.push({ label: '查看引用', action: 'traceReferences' });
  }
  contextMenu.render(menuItems);
});
上述代码监听 cellSelect 事件,依据 isDate 和 hasFormula 标志动态构建菜单项数组,并调用 render 方法更新界面。该机制提升了操作精准度与用户体验。
支持的数据类型映射
单元格类型显示菜单项
日期格式化日期、复制为时间戳
公式追踪引用、编辑公式
超链接打开链接、修改URL

4.2 多行多列选择下的菜单行为设计

在复杂数据表格中,用户常需跨行跨列选择多个单元格。此时右键菜单的行为必须精准响应选区上下文,避免误操作。
交互逻辑设计
当用户选中多个不连续区域时,菜单应仅提供通用操作项,如“复制”、“导出选区”。若选区位于同一行或列,可激活“批量填充”功能。
状态判断代码实现

// 判断选区是否为矩形连续区域
function isContiguousSelection(selections) {
  return selections.length === 1; // 多个selection对象表示非连续
}
该函数通过检测选区集合长度判断连续性,单个矩形区域返回 true,用于控制菜单项的显隐逻辑。
菜单项控制策略
  • 仅复制:所有多选场景均支持
  • 批量编辑:仅限单一连续区域
  • 删除行:跨行选择时启用

4.3 结合数据模型实现删除、编辑等实用功能

在现代Web应用中,基于数据模型实现动态操作是核心需求之一。为支持删除与编辑功能,需在前端组件中绑定模型字段,并通过事件触发对应逻辑。
删除功能的实现
采用软删除策略时,通常更新 `is_deleted` 字段而非物理移除记录:

function handleDelete(id) {
  fetch(`/api/items/${id}`, {
    method: 'PATCH',
    body: JSON.stringify({ isDeleted: true }),
    headers: { 'Content-Type': 'application/json' }
  });
}
该请求将指定资源标记为已删除,保留数据完整性的同时实现逻辑隔离。
编辑功能的数据同步
编辑操作需加载现有模型数据至表单,提交时执行PUT请求完成更新:
  • 点击“编辑”按钮触发数据拉取
  • 表单双向绑定确保实时响应
  • 提交后调用API同步至后端

4.4 风格美化与QSS样式的兼容性处理

在Qt应用开发中,QSS(Qt Style Sheets)是实现界面美化的重要手段。通过类CSS语法,开发者可自定义控件外观,如颜色、边框、字体等。
基本样式定义
QPushButton {
    background-color: #4CAF50;
    border: 1px solid #45a049;
    color: white;
    padding: 6px;
    border-radius: 4px;
}
QPushButton:hover {
    background-color: #45a049;
}
上述代码为按钮设置背景色、圆角边框及悬停效果。QSS支持伪状态(如:hover)、子控件选择器和层级选择器,极大增强了表现力。
兼容性问题处理
  • 不同Qt版本对QSS解析存在差异,建议避免使用实验性属性;
  • 部分原生控件(如QComboBox下拉菜单)在跨平台时渲染不一致,需结合paintEvent进行定制绘制;
  • 使用setStyleSheet时应确保父容器未覆盖子控件样式。

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

性能监控与调优策略
在高并发系统中,持续的性能监控至关重要。推荐使用 Prometheus + Grafana 构建可视化监控体系,定期采集服务响应时间、GC 频率、内存使用等关键指标。
  • 设置阈值告警,如 P99 响应时间超过 500ms 触发通知
  • 定期分析火焰图(Flame Graph)定位热点方法
  • 使用 pprof 工具进行 Go 程序性能剖析
代码层面的资源管理
避免资源泄漏是保障长期稳定运行的核心。以下为数据库连接池配置的最佳实践示例:

db.SetMaxOpenConns(100)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(time.Hour)
db.SetConnMaxIdleTime(30 * time.Minute)
该配置有效防止连接耗尽,同时减少因长时间空闲导致的连接中断问题。
微服务间通信安全
在服务网格中,强制启用 mTLS 可显著提升安全性。以下是 Istio 中启用双向 TLS 的策略片段:

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
spec:
  mtls:
    mode: STRICT
部署流程标准化
采用 GitOps 模式实现部署可追溯性。下表列出 CI/CD 流水线中的关键检查点:
阶段检查项工具示例
构建静态代码扫描golangci-lint
测试单元与集成测试覆盖率 ≥ 80%Go Test
部署镜像签名验证cosign
PyQt5中QTableWidget弹出菜单的示例代码 接下来,来,我们创建一个继承自QMainWindow的自定义窗口类来,我们创建一个继承自QMainWindow的自定义窗口类,并在其中添加一个QTableWidget组件。代码如下来,我们创建一个继承自QMainWindow的自定义窗口类,并在其中添加一个QTableWidget组件。在上述代码中来,我们创建一个继承自QMainWindow的自定义窗口类,并在其中添加一个QTableWidget组件。在上述代码中,我们创建了一个QTableWidget实例,并设置了表格的行数和列数,以及表头。 阅读详情

相关推荐

从零搭建Synopsys EDA环境:Ubuntu系统下的完整安装与避坑指南

本文详细介绍了在Ubuntu系统下从零搭建Synopsys EDA环境的完整流程,包括系统配置、安装文件准备、核心工具安装、License配置及常见问题排查。特别针对数字IC设计场景,提供了VCS、Verdi、Design Compiler等EDA Tools的安装避坑指南和性能优化建议,帮助开发者高效搭建稳定的开发环境。

weixin_33738982的博客 491

PyQt5中实现右键菜单

使用exec_()方法显示菜单。 从鼠标右键事件对象中获得当前坐标。 mapToGlobal()方法把当前组件的相对坐标转换为窗口(window)的绝对坐标。 要点解释 如果右键菜单里触发了事件contextMenuEvent()是内置方法?

weixin_44943389的博客 1245

饥荒联机版Mod开发——modmain环境与API深度解析

本文深入解析饥荒联机版Mod开发中的modmain.lua环境与核心API,详细讲解环境表构建原理、API注册与调用时机,并提供高级开发技巧与最佳实践。通过源码分析和实际案例,帮助开发者掌握Mod开发核心技术,解决常见问题,提升开发效率与代码质量。

weixin_30312563的博客 434

pyqt5右键菜单

pyqt5右键菜单

weixin_49577420的博客 1603

置换矩阵、转置矩阵以及向量空间、子空间

置换矩阵、转置矩阵以及向量空间、子空间导读置换矩阵 导读 MIT矩阵分析课程之后的的二篇笔记。

qq_44677482的博客 1673

I2S时序及音频驱动

I2S、音频驱动

qq_41882586的博客 3948

python之PyQt按钮右键菜单功能的实现代码

我们可以创建一个简单的窗口,然后在窗口中添加一个自定义按钮。当鼠标右键点击按钮时,弹出菜单,并在菜单中选中某个选项后弹出消息框。我们可以在窗口中添加多个自定义按钮,每个按钮都有自己的右键菜单,并在选中菜单选项后弹出消息框。以上就是Python之PyQt按钮右键菜单功能的实现代码。

huadingjin 2021

GK2302量产工具下载方法,GK2302开卡教程,GK2301LT怎么开卡方法,附GK2302开卡工具,GK2301LT量产软件下载

​每种量产软件的操作流程可能略有不同,因此必须按照要求操作。为确保安全,建议使用量产部落网下载的原版量产开卡软件。

A520091000的博客 2123

pyqt5 table 右键菜单

【代码】pyqt5 table 右键菜单。

power的专栏 1314

SE80 Repository Information System 在 SAP CRM WebClient UI 组件分析中的实战指南

在 SAP CRM WebClient UI 开发过程中,如何快速定位组件、视图、上下文节点以及各类运行时对象,一直是调试效率的关键。(后文简称RIS)正是隐藏在SE80里的瑞士军刀,帮助开发者按照组件集、数据元素、上下文节点属性等多维条件进行交叉检索。官方博客将它描述为本文结合多年项目经验,系统梳理RIS的功能脉络与实战技巧,同时引入真实案例,示范如何借助它在几分钟内完成以往动辄数小时的排查任务。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2万+

Linux 4.19、Linux 5.10、Linux 6.1 三个版本详细分析

Linux 4.19发布日期:2018年10月22日LTS 状态:是长期支持版本,官方支持到2024年12月。Linux 5.10发布日期:2020年12月13日LTS 状态:LTS 版本,官方支持到2026年12月。Linux 6.1发布日期:2022年12月11日LTS 状态:不是官方的LTS版本,但通常社区会为新的版本提供一定时间的支持。定位:稳定性和长期支持,广泛应用于多种平台,尤其是嵌入式系统和服务器。主要优势:稳定性高,广泛的硬件支持,核心功能可靠。

小灰灰的博客 5956

PyQt6 优化操作:QTableWidget 增加右键菜单,支持对选中区域内容的复制、粘贴、清空、插入、删除、设置对齐方式等操作

PyQt6 优化操作:QTableWidget 增加右键菜单,支持对选中区域内容的复制、粘贴、清空、插入、删除操作

AbigailQin 的博客 4694

Unity 佳能SDK 及数据获取

3. 把CameraControl 下面只要是绿色的 .cs 文件都复制到Unity 中。1. 填写信息跟官方申请SDK,大概1-2个工作日会邮件回复你。2. 将SDK这两个文件放到 Unity Plugins文件夹。

我知道你很急,但是路要一步步走 1477

pyqt5-列表右键菜单

【代码】pyqt5-列表右键菜单。

m0_62653695的博客 592

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

pyqt 创建右键菜单栏

【代码】pyqt 创建右键菜单栏。

sky0Lan的博客 925

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[pyqt5]QListWidget的增删改和右键菜单创建

QListWidget是一个用于显示数据的列表,每个条目中都是一个QListWidgetItem对象;QListWidget可以设置多选;

FL1623863129的博客 2178

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PyQt5中QTablewidget生成右键菜单

PyQt5中QTablewidget生成右键菜单

weixin_46676149的博客 1348

PyQt5 tableWidget表添加右键菜单功能

右键菜单功能函数 def tableWidget_VTest_menu(self, pos): """ :return: """ row_num = -1 for i in self.tableWidget_VTest.selectionModel().selection().indexes(): row_num = i.row() if row_num < 500: #

weixin_45805339的博客 4336

pyqt中table_widget标签实现右键删除某一行

1、首先使用table_widget.setContextMenuPolicy(Qt.CustomContextMenu)设置一下使用自定义右键菜单。2、使用self.table_widget.customContextMenuRequested.connect(self.showContextMenu)使用menu.exec_(self.table_widget.mapToGlobal(pos))设置右键点击事件后,删除按钮出现在哪,定位你点击的地方。设置点击右键时触发的事件。

weixin_47168761的博客 1035

PyQt5随笔:给PyQt5 界面添加右键菜单

1.前言 一个完整的界面程序怎么少得了右键菜单呢?如在浏览器的右键菜单 我做的右键菜单如下图,其包括:图标,选项名称,快捷键 图标可以在 https://www.iconfont.cn/collections/index?spm=a313x.7781069.1998910419.3 这个阿里巴巴图标网站免费下载,下载16*16尺寸就可以 2.PyQt5版本 :5.15.0 3.创建右键菜单代码分析 3.1声明创建右键菜单 #声明在groupBox创建右键菜...

集电极 1万+

PyQt5_QTableWidget分页单选右键菜单控件

PyQt5实现QTableWidget分页,右键菜单自定义控件

m0_37967652的博客 2351

Python实现在目录右键弹出菜单中增删目录名称

因实际工作而产生的小需求。右击目录,在弹出菜单中点击,在目录名前增删“(完成)”字样。在繁忙时可减少些操作,还可多选批量更名。再次操作会删除“(完成)”字样。 工作中,目录名以01开头,往下排。故在开头两数字后增删“(完成)”字样。如果目录名不是以两数字开头,则直接在目录名增删“(完成)”字样。 存在一个未能解决的问题,当目录名包含空格时,取不到完整的目录名,sys.arg的第二个参数开始,每个参数包含了一小段空格分隔的内容……想重新组合字符串,又发现空格有可能不唯一,感觉无法还原连续空格的情况,直接搁置

liuhui23的专栏 665

[pyqt5]右键窗口弹出菜单并触发菜单点击事件

【代码】[pyqt5]右键窗口弹出菜单并触发菜单点击事件。

FL1623863129的博客 5369

PyQt5中QTableWidget添加右键菜单的10种技巧(实战代码全解析)

掌握PyQt5 QTableWidget添加右键菜单的10种实用技巧,解决上下文菜单集成难题。涵盖事件重写、信号连接与菜单定制等核心方法,适用于表格操作优化场景,提升界面交互性,实战代码全解析值得收藏。

CompiTide的博客 702

PySide(PyQT)重新定义contextMenuEvent()实现鼠标右键弹出菜单

通过重新定义contextMenuEvent()来实现鼠标右键菜单。上述代码,只有在按钮上有鼠标右键菜单。

xulibo5828的博客 849

Qt设置右键菜单无效(customContextMenuRequested触发)

问题描述 想使用customContextMenuRequested信号触发槽函数,发现没有效果 例如:槽函数代码如下 void CMainWindow::on_tableView_customContextMenuRequested(const QPoint &pos) { Q_UNUSED(pos); QMenu menu; //创建一个QMenu对象 //给menu添加三个选项 menu.addAction("选项一"); menu.addAction

lw的博客 1万+
上一篇: Python项目部署必看:利用os.environ优雅管理配置的5种方法
下一篇: 想做出顶级期刊级别的热图?你必须掌握这7种Seaborn颜色控制方法
LearnFlow
博客等级 码龄1年 150粉丝 2113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值