将函数绑定到 python 中的键。使用图形用户界面

Binding a function to a key in python. Working with GUI

我现在正在做项目,需要绑定按键控件 命令 左箭头 向右箭头

每个都有不同的功能。我已经想出如何将整个键盘绑定到功能上。但是我无法弄清楚如何为各个键执行此操作。我不确定我是否可以使用 Tkinter。除了使用它来绑定单个键之外,还有其他选择吗?

这就是我绑定整个键盘所做的。

from random import randint
from PyQt5 import uic
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import QtCore

class KeyboardWidget(QWidget):
    keyPressed = pyqtSignal(str)
    def keyPressEvent(self,keyEvent):
        self.keyPressed.emit(keyEvent.text())

然后我将该代码导入我的主文件并调用连接到任何键的函数。

如果你有什么办法让我可以点击各个键,那就太棒了!

QWidget::keyPressEvent(QKeyEvent *event)

This event handler, for event event, can be reimplemented in a subclass to receive key press events for the widget.


int QKeyEvent::key() const

Returns the code of the key that was pressed or released.

from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QPushButton
from PyQt5.QtCore import Qt


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.setFixedSize(700, 400)
        self.setMouseTracking(True)
        self.x = 300
        self.y = 200
        self.show()

    def up(self):
        self.update()

    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Left: 
            self.x -= 5
        elif event.key() == Qt.Key_Right:
            self.x += 5
        elif event.key() == Qt.Key_Up:    
            self.y -= 5
        elif event.key() == Qt.Key_Down:  
            self.y += 5
        self.up()    

    def paintEvent(self, event):
        if self.x <= -45:
            self.x = 725
        elif self.x >= 725:
            self.x = -45
        if self.y <= -25:
            self.y = 415
        elif self.y >= 415:
            self.y = -25
        self.qp = QPainter()
        self.qp.begin(self)
        self.drawFlag()
        self.qp.end()

    def drawFlag(self):
        self.qp.setBrush(QColor(150, 75, 0))
        self.qp.drawEllipse(self.x, self.y, 50, 20)
        self.qp.setBrush(QColor(0, 255, 255))
        self.qp.drawEllipse(self.x + 10, self.y - 10, 30, 20)


if __name__ == '__main__': 
    import sys
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())