在python中将函数绑定到键。使用GUI

2024-06-26 11:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在做一个项目,我需要绑定控制键 命令 左箭头 右箭头

每种方法都适用于不同的功能。我已经知道如何将整个键盘绑定到函数。但我不知道如何为单个键执行此操作。我不确定是否允许我使用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())

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

如果你有任何方法,使它,使我可以点击个人的关键,这将是惊人的


Tags: 项目方法函数fromimport命令self功能
1条回答
网友
1楼 · 发布于 2024-06-26 11:21:22

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_())

enter image description here

相关问题 更多 >