我希望如果按下按钮,键盘上的箭头键也可以执行相同的操作。我知道如果要在单击按钮后连接到fxn,我会做类似self.btn.clicked.connect(fxnnamehere)的操作。键盘上的箭头键是否有类似这样的内容?

最佳答案

在这种情况下,可以使用QShortCut类:

import sys
from PyQt4 import QtCore, QtGui


class Widget(QtGui.QWidget):
    def __init__(self):
        super().__init__()

        QtGui.QShortcut(QtCore.Qt.Key_Up, self, self.fooUp)
        QtGui.QShortcut(QtCore.Qt.Key_Down, self, self.fooDown)
        QtGui.QShortcut(QtCore.Qt.Key_Left, self, self.fooLeft)
        QtGui.QShortcut(QtCore.Qt.Key_Right, self, self.fooRight)

    def fooUp(self):
        print("up")

    def fooDown(self):
        print("down")

    def fooLeft(self):
        print("left")

    def fooRight(self):
        print("right")

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())




在您的特定情况下,似乎您正在使用Qt Designer生成的代码,该类提供的不是qwidget,而是用于填充原始小部件的类。

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        ...

        QtGui.QShortcut(QtCore.Qt.Key_Up, MainWindow, self.fooUp)
        QtGui.QShortcut(QtCore.Qt.Key_Down, MainWindow, self.fooDown)
        QtGui.QShortcut(QtCore.Qt.Key_Left, MainWindow, self.fooLeft)
        QtGui.QShortcut(QtCore.Qt.Key_Right, MainWindow, self.fooRight)

    def fooUp(self):
        print("up")

    def fooDown(self):
        print("down")

    def fooLeft(self):
        print("left")

    def fooRight(self):
        print("right")

关于python - 如何使用箭头键触发事件PyQt4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51458754/

10-11 20:44