PyQt 中一个按钮的两个快捷键

Posted

技术标签:

【中文标题】PyQt 中一个按钮的两个快捷键【英文标题】:Two Shortcuts for One Button in PyQt 【发布时间】:2018-12-26 19:40:28 【问题描述】:

在 PyQt 中,如何为一个按钮绑定两个快捷键?我搜索了 QT 文档和 ***,但我发现的唯一内容是 Two shortcuts for one action,但那是针对 QT 的,我无法理解。

【问题讨论】:

【参考方案1】:

唯一的区别是你应该使用list而不是QList

from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        menubar = self.menuBar()
        menu = menubar.addMenu("File")
        foo_action = menu.addAction("foo")
        foo_action.setShortcuts(["Ctrl+1", "Ctrl+S"])
        foo_action.triggered.connect(self.on_triggered)

    @QtCore.pyqtSlot()
    def on_triggered(self):
        print("on_triggered")

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

在 QWidgets 的情况下,它们没有 setShortcuts() 方法,因此一种选择是使用 QShortcuts:

for sequence in ("Enter", "Return",):
    shorcut = QtWidgets.QShortcut(sequence, self.pushButton_eq)
    shorcut.activated.connect(self.pushButton_eq.animateClick)

【讨论】:

我这样做了,self.pushButton_eq.setShortcut(_translate("MainWindow", ["Return", "Enter"])),但我得到了TypeError: translate(str, str, disambiguation: str = None, n: int = -1): argument 2 has unexpected type 'list' 我的程序完整代码可用here。它位于./Calculator/MainWindow.py @DS_SecretStudios 为什么要使用_translate @DS_SecretStudios 另一方面,在您的问题中,您指向的是一个动作 (QAction) 而不是 QPushButton。 那个按钮在我的程序中运行一个功能,因此我虽然可以将它连接到按钮上。

以上是关于PyQt 中一个按钮的两个快捷键的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5窗口设计基础之常用控件类(三)

PyQt4 - 如何禁用所有热键(本机键盘快捷键)

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

PyQt5 之QToolButton工具按钮

PyQt5 之QToolButton工具按钮

pyqt5-快捷键设置