簡體   English   中英

如何使用PySide2的箭頭鍵創建快捷方式?

[英]How do I make a shortcut using arrow key with 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)

這將直接連接按鈕與回調功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM