Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/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 如何使用PySide2的箭头键创建快捷方式?_Python_Pyside2_Qshortcut - Fatal编程技术网

Python 如何使用PySide2的箭头键创建快捷方式?

Python 如何使用PySide2的箭头键创建快捷方式?,python,pyside2,qshortcut,Python,Pyside2,Qshortcut,我想用Qt5+Python(Pyside2)为按钮添加一个键盘快捷键。使用常规键创建快捷方式的代码: import sys import random from PySide2 import QtCore, QtWidgets, QtGui class MyWidget(QtWidgets.QWidget): def __init__(self): super().__init__() self.hello = ["Hallo Welt", "你好,世

我想用Qt5+Python(Pyside2)为按钮添加一个键盘快捷键。使用常规键创建快捷方式的代码:

import sys
import random
from PySide2 import QtCore, QtWidgets, QtGui

class MyWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        self.hello = ["Hallo Welt", "你好,世界", "Hei maailma",\
            "Hola Mundo", "Привет мир"]

        self.button = QtWidgets.QPushButton("Click me!")
        self.text = QtWidgets.QLabel("Hello World")
        self.text.setAlignment(QtCore.Qt.AlignCenter)

        self.text.setFont(QtGui.QFont("Titillium", 30))
        self.button.setFont(QtGui.QFont("Titillium", 20))

        self.layout = QtWidgets.QVBoxLayout()
        self.layout.addWidget(self.text)
        self.layout.addWidget(self.button)
        self.setLayout(self.layout)

        shortcut = QtWidgets.QShortcut(QtGui.QKeySequence('o'), self.button)
        shortcut.activated.connect(self.magic)

        self.button.clicked.connect(self.magic)


    def magic(self):
        self.text.setText(random.choice(self.hello))

if __name__ == "__main__":
    app = QtWidgets.QApplication([])

    widget = MyWidget()
    widget.resize(800, 600)
    widget.show()

    sys.exit(app.exec_())
如果我将该
快捷方式=…
行替换为以下内容:

shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.LeftArrow), self.button)
什么也没发生。我错过了什么

我还尝试将QtCore.Qt.LeftArrow值转换为字符串(什么也没有发生),并尝试直接使用Qt.LeftArrow生成QShortcut(抱怨nullptr)。使用QtCore.Qt.Key_Left作为QShortcut的参数也给了我nullptr。

我发现:

shortcut = QtWidgets.QShortcut(QtGui.QKeySequence.MoveToPreviousChar, self.button)
操作列表如下所示:

对于PySide2,类似于以下的东西应该可以工作:

QtWidgets.QShortcut(QtGui.QKeySequence("right"), self.button, self.magic)
它将直接连接按钮和回调函数