如何在 PySide2 中使用箭头键制作快捷方式?



我想用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 = ...行:

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)

操作列表如下: http://doc.qt.io/qt-5/qkeysequence.html#StandardKey-enum

使用 PySide2,类似以下内容的内容应该可以工作:

QtWidgets.QShortcut(QtGui.QKeySequence("right"), self.button, self.magic)

这将直接连接带有回调函数的按钮。

相关内容

  • 没有找到相关文章

最新更新