Python 正确处理QAction快捷方式

Python 正确处理QAction快捷方式,python,pyqt,pyqt4,qaction,Python,Pyqt,Pyqt4,Qaction,我有一个应用程序,用户可以添加自己的密钥序列,并在点击密钥序列时打开一个文件或文件夹。我已经对用户的输入进行了所有验证,在遇到这个问题之前,我的应用程序几乎完成了 下面的代码将解释: result = [["path\\to\\foler", "Q, R"], ["path\\to\\file.ext", "Q, R, 1"]] for data in result: if os.path.exists(data[0]): shortcut = QAction(owner

我有一个应用程序,用户可以添加自己的密钥序列,并在点击密钥序列时打开一个文件或文件夹。我已经对用户的输入进行了所有验证,在遇到这个问题之前,我的应用程序几乎完成了

下面的代码将解释:

result = [["path\\to\\foler", "Q, R"], ["path\\to\\file.ext", "Q, R, 1"]]
for data in result:
    if os.path.exists(data[0]):
        shortcut = QAction(owner)
        shortcut.setShortcut(QKeySequence(data[1]))
        shortcut.triggered.connect(lambda checked, p=data[0]: func_to_open(p))
        owner.addAction(shortcut)
        owner.shortcut_list += [shortcut]
断开连接以重新加载快捷方式的方法:

for short in owner.shortcut_list:
    owner.removeAction(short)
如您所见,我有两个不太相似的快捷键“Q,R”和“Q,R,1”,其中使用序列“Q,R,1”触发快捷键“Q,R”,并且不读取下一个按键笔划(“Q,R,1”不起作用)。我想医生说,如果检测到这是一个有效序列,它将立即触发

在这种情况下我该怎么办?更好的解决方案是让
QAction
等待按键暂停,然后读取得到的任何序列。如何使这两种快捷方式都起作用

编辑

使用QShortcut编码

result = [["path\\to\\foler", "Q, R"], ["path\\to\\file.ext", "Q, R, 1"]]
for data in result:
    if os.path.exists(data[0]):
        shortcut = QShortcut(QKeySequence(book[1]), owner)
        lambda_func = lambda w=path: func_to_open(w)

        #Does Not Trigger, What is wrong?(Nothing happens)
        shortcut.activatedAmbiguously.connect(lambda_func)
        owner.shortcut_list += [[shortcut, lambda_func]]
断开连接方法(不起作用,在activated()中产生错误)

已激活。断开连接()错误:

已激活。断开连接(短[1])错误


我曾尝试先使用
QShortcut
,但不幸的是,当用户更改快捷方式序列时,我似乎无法断开它们以重新加载所有快捷方式。此外,
盲目激活
不会触发,可能我做错了什么<代码>快捷方式。无效激活。连接(lambda p=data[0]:func_to_open(p))
 for short in owner.shortcut_list:
    short[0].activatedAmbiguously.disconnect() #or short[0].activatedAmbiguously.disconnect(short[1])
    short[0].deleteLater()
disconnect failed bwtween activated and all of its connections
function is not connected