python - PyQt5在打开的菜单中使用快捷方式

标签 python pyqt5 qmenu

在 PyQt5 应用程序中,我有一个 QMenu。我想让菜单打开后,用户可以使用键 1、2、3 等来选择菜单中的选项 1、2、3 等。但是,我在设置快捷方式或让快捷方式对按键使用react时遇到问题。

我举了一个例子 this网站,并对其进行了稍微调整以显示我的问题。我尝试在 addAction 函数中分配快捷方式,但这不起作用。

我尝试创建常规 QShortcuts,但当菜单打开时,它们不再响应。我注意到我可以使用向上和向下箭头更改所选选项,然后使用 Enter 键确认我的选择,因此 QMenu 能够捕获按键。但我如何分配自己的快捷键?

from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu
import sys


class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = "PyQt5 Context Menu"
        self.top = 200
        self.left = 500
        self.width = 400
        self.height = 300
        self.InitWindow()


    def InitWindow(self):
        self.setWindowIcon(QtGui.QIcon("icon.png"))
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.show()

    def contextMenuEvent(self, event):
        contextMenu = QMenu(self)
        newAct = contextMenu.addAction("New", self.triggered, shortcut='A')
        openAct = contextMenu.addAction("Open", self.triggered2, shortcut='B')
        quitAct = contextMenu.addAction("Quit", self.triggered3, shortcut='C')
        action = contextMenu.exec_(self.mapToGlobal(event.pos()))
        if action == quitAct:
            self.close()

    def triggered(self):
        print("triggered 1")

    def triggered2(self):
        print("triggered 2")

    def triggered3(self):
        print("triggered 3")
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())

最佳答案

打开 QMenu 时,快捷方式不处于事件状态,但 accelerator keys在工作中。您可以使用 & 声明它们:

    newAct = contextMenu.addAction("New &1", self.triggered)

弹出上下文菜单时,按 1 会触发正确的功能。

关于python - PyQt5在打开的菜单中使用快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63902019/

相关文章:

python - QRubberBand 在我调整窗口大小时移动

python - 在 PyQt QAction 菜单中右对齐 QKeySequence

python - 将参数传递给 PyQt SIGNAL 连接

python - pandas:查找给定列的百分位数统计信息

python - Numpy:有效地将所有满足条件的像素设置为黑色

python - 是否可以在类里面不使用 "self"?

python - Tastypie 属性和相关名称,空属性错误

python - QProcess 未调用完成?

python - 在 Ubuntu 14.04 上构建 PyQt5 的问题