前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python pyqt5 QTableWidget 添加右键菜单

python pyqt5 QTableWidget 添加右键菜单

作者头像
用户5760343
发布2019-07-23 11:11:24
6.5K0
发布2019-07-23 11:11:24
举报
文章被收录于专栏:sktj

-- coding: utf-8 --

''' 【简介】 PyQT5的表格中支持右键菜单例子

'''

import sys from PyQt5.QtWidgets import (QMenu, QPushButton, QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem, QHeaderView) from PyQt5.QtCore import QObject, Qt

class Table(QWidget):

代码语言:javascript
复制
def __init__(self):
    super().__init__()
    self.initUI()

def initUI(self):
    self.setWindowTitle("QTableWidget 例子")
    self.resize(500, 300);
    conLayout = QHBoxLayout()
    self.tableWidget = QTableWidget()
    self.tableWidget.setRowCount(5)
    self.tableWidget.setColumnCount(3)
    conLayout.addWidget(self.tableWidget)

    self.tableWidget.setHorizontalHeaderLabels(['姓名', '性别', '体重'])
    self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

    newItem = QTableWidgetItem("张三")
    self.tableWidget.setItem(0, 0, newItem)

    newItem = QTableWidgetItem("男")
    self.tableWidget.setItem(0, 1, newItem)

    newItem = QTableWidgetItem("160")
    self.tableWidget.setItem(0, 2, newItem)
    # 表格中第二行记录
    newItem = QTableWidgetItem("李四")
    self.tableWidget.setItem(1, 0, newItem)

    newItem = QTableWidgetItem("女")
    self.tableWidget.setItem(1, 1, newItem)

    newItem = QTableWidgetItem("170")
    self.tableWidget.setItem(1, 2, newItem)

    self.tableWidget.setContextMenuPolicy(Qt.CustomContextMenu)  ######允许右键产生子菜单
    self.tableWidget.customContextMenuRequested.connect(self.generateMenu)  ####右键菜单
    self.setLayout(conLayout)

def generateMenu(self, pos):
    # rint( pos)
    row_num = -1
    for i in self.tableWidget.selectionModel().selection().indexes():
        row_num = i.row()

    if row_num < 2:
        menu = QMenu()
        item1 = menu.addAction(u"选项一")
        item2 = menu.addAction(u"选项二")
        item3 = menu.addAction(u"选项三")
        action = menu.exec_(self.tableWidget.mapToGlobal(pos))
        if action == item1:
            print('您选了选项一,当前行文字内容是:', self.tableWidget.item(row_num, 0).text(),
                  self.tableWidget.item(row_num, 1).text(), self.tableWidget.item(row_num, 2).text())

        elif action == item2:
            print('您选了选项二,当前行文字内容是:', self.tableWidget.item(row_num, 0).text(),
                  self.tableWidget.item(row_num, 1).text(), self.tableWidget.item(row_num, 2).text())

        elif action == item3:
            print('您选了选项三,当前行文字内容是:', self.tableWidget.item(row_num, 0).text(),
                  self.tableWidget.item(row_num, 1).text(), self.tableWidget.item(row_num, 2).text())
        else:
            return

if name == 'main': app = QApplication(sys.argv) example = Table() example.show() sys.exit(app.exec_())

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.07.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • -- coding: utf-8 --
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档