Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用箭头键触发事件PyQt4_Python_Pyqt_Pyqt4 - Fatal编程技术网

Python 如何使用箭头键触发事件PyQt4

Python 如何使用箭头键触发事件PyQt4,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,如果按下按钮,我希望键盘上的箭头键也能执行相同的操作。我知道,如果我想在单击按钮后连接到fxn,我会执行self.btn.clicked.connect(fxnnamehere)之类的操作。在我的键盘上有这样的箭头键吗 对于这种情况,可以使用QShortCut类: import sys from PyQt4 import QtCore, QtGui class Widget(QtGui.QWidget): def __init__(self): super().__i

如果按下按钮,我希望键盘上的箭头键也能执行相同的操作。我知道,如果我想在单击按钮后连接到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设计器生成的代码,该类提供的不是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")

我在声明TypeError时出错:参数与任何重载调用不匹配:QShortcut(QWidget):参数1具有意外的类型“Key”/////////////QShortcut(QKeySequence,QWidget,meber:QT\u SLOT=0,含糊不清成员:QT\u SLOT=0,context:QT.ShortcutContext=QT.WindowShortcut):参数2具有意外的类型“Ui\u main window”@ekcal8该错误是由您使用的代码引起的,您可以发布它。