在 QTableWidget 表格中实现右键快捷菜单 的案例
1.如何弹出菜单
2.如何在满足条件的情况下弹出菜单

QMenu.exec_

import sysfrom PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QMenu, QVBoxLayout'''
在 QTableWidget 表格中实现右键快捷菜单 的案例
1.如何弹出菜单
2.如何在满足条件的情况下弹出菜单QMenu.exec_'''class twContextDemo(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 设置定位和左上角坐标self.setGeometry(300, 300, 460, 360)# 设置窗口标题self.setWindowTitle('QTableWidget扩展表格显示上下文菜单 的演示')# 设置窗口图标# self.setWindowIcon(QIcon('../web.ico'))layout = QVBoxLayout()self.tablewidget = QTableWidget()self.tablewidget.setRowCount(3)self.tablewidget.setColumnCount(3)layout.addWidget(self.tablewidget)self.tablewidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])newItem = QTableWidgetItem('美国队长')self.tablewidget.setItem(0,0,newItem)newItem = QTableWidgetItem('男')self.tablewidget.setItem(0,1,newItem)newItem = QTableWidgetItem('180')self.tablewidget.setItem(0,2,newItem)newItem = QTableWidgetItem('拿破仑')self.tablewidget.setItem(1,0,newItem)newItem = QTableWidgetItem('女')self.tablewidget.setItem(1,1,newItem)newItem = QTableWidgetItem('150')self.tablewidget.setItem(1,2,newItem)# 允许打开上下文菜单self.tablewidget.setContextMenuPolicy(Qt.CustomContextMenu)# 绑定事件self.tablewidget.customContextMenuRequested.connect(self.generateMenu)self.setLayout(layout)def generateMenu(self,pos):print(pos)# 获取点击行号for i in self.tablewidget.selectionModel().selection().indexes():rowNum = i.row()# 如果选择的行索引小于2,弹出上下文菜单if rowNum < 2:menu = QMenu()item1 = menu.addAction("复制")item2 = menu.addAction("剪切")item3 = menu.addAction("粘贴")item4 = menu.addAction("添加一行")item5 = menu.addAction("删除")item6 = menu.addAction("修改")# 转换坐标系screenPos = self.tablewidget.mapToGlobal(pos)print(screenPos)# 被阻塞action = menu.exec(screenPos)if action == item1:print('选择了第1个菜单项',self.tablewidget.item(rowNum,0).text(),self.tablewidget.item(rowNum,1).text(),self.tablewidget.item(rowNum,2).text())elif action == item2:print('选择了第2个菜单项',self.tablewidget.item(rowNum,0).text(),self.tablewidget.item(rowNum,1).text(),self.tablewidget.item(rowNum,2).text())elif action == item3:print('选择了第3个菜单项',self.tablewidget.item(rowNum,0).text(),self.tablewidget.item(rowNum,1).text(),self.tablewidget.item(rowNum,2).text())elif action == item4:print('选择了第4个菜单项',self.tablewidget.item(rowNum,0).text(),self.tablewidget.item(rowNum,1).text(),self.tablewidget.item(rowNum,2).text())else:returnif __name__ == '__main__':app = QApplication(sys.argv)# 设置应用图标app.setWindowIcon(QIcon('../web.ico'))w = twContextDemo()w.show()sys.exit(app.exec_())

PyQT5 (四十九) 在 QTableWidget 表格中实现右键快捷菜单 的案例相关推荐

  1. PyQT5 (四十六) 在 QTableWidget 表格中设置合并单元格 的案例

    在 QTableWidget 表格中设置合并单元格 的案例 setSpan(row, col, 要合并的行数, 要合并的列数) import sysfrom PyQt5 import QtPrintS ...

  2. PyQT5 (四十三) 在 QTableWidget 表格中设置单元格的字体和颜色 的案例

    在 QTableWidget 表格中设置单元格的字体和颜色 的案例 import sysfrom PyQt5 import QtPrintSupport, QtGui from PyQt5.QtCor ...

  3. 进程间通信方式_第四十九期-Linux内核中的进程概述(4)

    作者:熊轶翔@熊仙僧,中国科学院软件研究所智能软件研究中心 上一章我们学习了进程调度,进程调度的过程是由操作系统内核管理的.在Linux中还存在着另一种由内核管理且又与进程运行息息相关的操作,也是就在 ...

  4. 【Microsoft Azure 的1024种玩法】四十九.在Azure中使用Azure VirtualMachines 搭建Microsoft SharePoint 2016

    [简介] SharePoint Server 2016 的设计.开发和测试以 Microsoft 软件即服务 (SaaS) 战略为核心.SharePoint Server 2016 广泛借鉴了该经验, ...

  5. Python编程基础:第四十九节 鸭子类型Duck Typing

    第四十九节 鸭子类型Duck Typing 前言 实践 前言 本节我们一起学习一个非常有趣的知识点:鸭子类型.有这么一句话:If it walks like a duck, and it quacks ...

  6. 四十九、深入了解两个并发接口Callable和Runnable的区别

    @Author:Runsen @Date:2020/6/11 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...

  7. c语言头文件格式图片_阿波罗 STM32F767 开发板资料连载第四十九章 图片显示实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第四十九章 图片显示实验 ...

  8. 如何选择适合你的兴趣爱好(四十九),现代舞

    如何选择适合你的兴趣爱好(四十九),现代舞 围城网的摇摇今天给大家带来了"如何选择适合你的兴趣爱好"系列专辑的第四十九讲--现代舞.现代舞是20世纪初在西方兴起的一种与古典芭蕾相对 ...

  9. 信息系统项目管理师必背核心考点(四十九)合同法

    科科过为您带来软考信息系统项目管理师核心重点考点(四十九)合同法,内含思维导图+真题 [信息系统项目管理师核心考点]合同法 1.要约: 一经对方承诺就成立合同,例如投标人 2.要约邀请: 邀请他人向自 ...

最新文章

  1. R语言ggplot2可视化在图像边界内绘制geom_text文本标签实战
  2. The import java.util cannot be resolved
  3. lostash Timeout executing grok 问题排查
  4. 可以用计算机进行模拟实验,随着信息技术的发展,包括核实验在内的许多科学研究都可以用计算机进行模拟实验, - 问答库...
  5. 查询列名在哪张表_探索SQL-多表查询
  6. 被定制化开发坑惨了的IT人,不是所有的报表都能满足老板的需求
  7. php什么版本好玩_PHP各种版本区别对比详解
  8. linux下安装配置nginx,Linux下安装与配置nginx
  9. 虚拟机服务器关机命令,ESXi主机定时开关机设置
  10. VS中时间控件的使用
  11. 预警:Mac木马出新招,利用俄罗斯太空计划作诱饵
  12. 保姆级教学——虚拟机器人平台vrep(coppeliaSim)的机器人平台搭建
  13. nmn对卵巢的作用,nmn吃多久对卵巢,女性知识!
  14. ZXing实现扫描或选取图片识别二维码及条码功能
  15. ps cs6安装问题汇总
  16. python实现离散型变量分组统计
  17. CSS 画三角形、半圆、扇形、
  18. linux 用chomd修改权限时报:只读文件系统,linux下修改文件夹权限提示chmod: 更改xx 的权限: 只读文件系统...
  19. Java操作excel文件插入数据
  20. 【渝粤题库】广东开放大学 成本会计 形成性考核

热门文章

  1. c语言的除法向上还是向下取整,C语言向上或向下取整函数
  2. Windows 7下配置JDK环境变量
  3. CSS3有哪些新特性
  4. 51nod1289 大鱼吃小鱼
  5. 【Linux】从入门到放弃--常见指令以及权限理解
  6. helpdesk常见软件故障与解决方法
  7. Java如何实现任务超时处理
  8. iotop - 如何在 Linux 中监控磁盘 I/O
  9. 计算机网络 | 网络层(控制平面)
  10. r语言时间序列图_R中的时间序列图