将上下文菜单添加到特定的Qtablewdiget表列,Python

问题描述 投票:0回答:1

正在尝试使用pyQt5将数据填充到我的Qtablewdiget中。最重要的是,我想在表的特定列上添加一个上下文菜单。我已经实现了Qmenu以便在整个表中弹出菜单,但是可以帮助我如何为特定列实现上下文菜单操作。

查看我尝试过的进一步工作的快照

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QPushButton, QAction, QApplication, QLabel, QMainWindow, QMenu)
from PyQt5 import QtCore, QtGui, QtWidgets

# setting context menu policy on my table, "self.ui.tableWidgetGraph"
self.ui.tableWidgetGraph.setContextMenuPolicy(Qt.CustomContextMenu)

# setting context menu request  by calling a function,"self.on_context_menu"
self.ui.tableWidgetGraph.customContextMenuRequested.connect(self.on_context_menu)

# define table size
self.ui.tableWidgetGraph.setRowCount(length);
self.ui.tableWidgetGraph.setColumnCount(lenColumn);

def on_context_menu(self, point):
    # show context menu
    self.contextMenu = QMenu(self)
    Task_one_action = self.contextMenu.addAction("Task_one")
    self.contextMenu.addSeparator()
    Task_two_action = self.contextMenu.addAction("Task_two")
    self.contextMenu.addSeparator()
    quit_action = self.contextMenu.addAction("Quit")

    # I want to perform actions only for a single column(E.g: Context menu only for column 4 of my table
    # Need help here....???
    action = self.contextMenu.exec_(self.ui.tableWidgetGraph.mapToGlobal(point))

    self.selected_key = ""
    for self.item in self.ui.tableWidgetGraph.selectedItems():
        self.selected_key = self.item.text()

    if action == quit_action:
        print("Executing the [Quit/Exit] Action")
        qApp.quit()

    elif action == Task_one_action:
        print("Executing Search: [Task_one_action ]")

    elif action == Task_two_action:
        print("Executing Search: [Task_two_action ]")

[有人可以指导我如何仅对单个列执行上下文操作(例如:仅对表的第4列中的选定项目执行上下文菜单),。谢谢

python-3.x pyqt5 qtablewidget qmenu
1个回答
0
投票

您可以使用itemAt将项目放在某个位置,然后使用column(),但是由于它可能是空项目,因此无论该列是否存在,它都将返回None。

© www.soinside.com 2019 - 2024. All rights reserved.