PyQt5中QTablewidget生成右键菜单

QTablewidget生成右键菜单,需要自定义一个QTablewidget类

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QMenu, QAction, QDialog
from PyQt5.QtCore import Qt
from PyQt5 import QtCore

class CustomTableWidget(QTableWidget): 
    def __init__(self, parent=None):
        super(CustomTableWidget, self).__init__( parent)
        self.setRowCount(10)
        self.setColumnCount(2)

        # 初始化表格数据
        self.setHorizontalHeaderLabels(['姓名','班别']) #水平标题
        names = ['小天','小米','小云','小月','小芳','小贝','小美','小亮','小欢','小阳']
        classes = ['一班','一班','一班','二班','二班','二班','二班','三班','三班','三班']
        
        i = 0
        for item in names:
            self.setItem(i,0, QTableWidgetItem(item))#添加内容到表格中
            self.setItem(i,1, QTableWidgetItem(classes[i]))
            i += 1
        
        # 创建右键菜单
        self.popup_menu = QMenu(self)
        self.action1 = QAction("显示", self)#生成一个选项
        self.popup_menu.addAction(self.action1)#将选项添加到菜单中

        # 连接动作到槽函数(可选)
        self.action1.triggered.connect(self.on_action1_triggered)

    def mousePressEvent(self, event):#重写mousePressEvent
        if event.button() == Qt.RightButton:
            # 获取点击的单元格位置
            self.row = self.rowAt(event.y())#行
            self.column = self.columnAt(event.x())#列
            super().mousePressEvent(event)#调用父类的mousePressEvent处理其他事件
            
            # 显示右键菜单
            self.popup_menu.exec_(event.globalPos())
        else:
            super().mousePressEvent(event)#调用父类的mousePressEvent处理其他事件

    def on_action1_triggered(self):
        # 菜单选项action1的动作
        print(f"行:{self.row}  列:{self.column}")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    dialog = QDialog()
    dialog.resize(400, 300)
    table = CustomTableWidget(dialog)  # 创建一个表格
    table.setGeometry(QtCore.QRect(70, 50, 256, 192))
    dialog.show()
    sys.exit(app.exec_())

按F5运行,在界面的表格中按右键时,显示菜单
在这里插入图片描述
选中显示是,控制台输出选中的行数和列数
在这里插入图片描述
QAction的信号

信号 内容
triggered 点击或回车键触发时

相关推荐

  1. 菜单注册表位置

    2024-04-27 02:28:01       26 阅读
  2. notepad++绿色版添加菜单

    2024-04-27 02:28:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 02:28:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 02:28:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 02:28:01       82 阅读
  4. Python语言-面向对象

    2024-04-27 02:28:01       91 阅读

热门阅读

  1. TS码流解析(三)PES

    2024-04-27 02:28:01       31 阅读
  2. 五、搭建 Videojs,实战网络直播

    2024-04-27 02:28:01       29 阅读
  3. 【QEMU系统分析之启动篇(十九)】

    2024-04-27 02:28:01       32 阅读
  4. draw.io: 开启图表绘制的无限可能

    2024-04-27 02:28:01       33 阅读
  5. draw.io使用心得

    2024-04-27 02:28:01       33 阅读
  6. draw.io使用心得

    2024-04-27 02:28:01       40 阅读
  7. 机器学习笔记-01

    2024-04-27 02:28:01       29 阅读
  8. 成为程序员后我都明白了什么?

    2024-04-27 02:28:01       37 阅读
  9. 某人的系统四分法(管理+ 规则+应用+对接)

    2024-04-27 02:28:01       37 阅读
  10. pandas分组聚合练习

    2024-04-27 02:28:01       37 阅读
  11. linux-1-shell

    2024-04-27 02:28:01       31 阅读
  12. 【Pytorch】NameError: name ‘Variable‘ is not defined

    2024-04-27 02:28:01       25 阅读
  13. Linux常用命令简单介绍(面试常考!!!)

    2024-04-27 02:28:01       32 阅读