Как сделать ярлык с помощью клавиши со стрелкой с PySide2? - PullRequest
0 голосов
/ 07 июня 2018

Я хочу добавить сочетание клавиш для кнопки с 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 в строку (ничего не происходит) и попытался сделать QShortcut непосредственно с помощью Qt.LeftArrow (жалуется на nullptr).Использование QtCore.Qt.Key_Left в качестве параметра для QShortcut также дало мне nullptr.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

С PySide2 должно работать что-то вроде следующего:

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

, который напрямую соединит кнопку с функцией обратного вызова.

0 голосов
/ 07 июня 2018

Я узнал:

shortcut = QtWidgets.QShortcut(QtGui.QKeySequence.MoveToPreviousChar, self.button)

Список действий здесь: http://doc.qt.io/qt-5/qkeysequence.html#StandardKey-enum

...