将函数绑定到 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_())
我现在正在做项目,需要绑定按键控件 命令 左箭头 向右箭头
每个都有不同的功能。我已经想出如何将整个键盘绑定到功能上。但是我无法弄清楚如何为各个键执行此操作。我不确定我是否可以使用 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_())