PyQt 中的 keyPressEvent
keyPressEvent in PyQt
我正在用 PyQt5 设计一个实验。我想要的只是在堆叠小部件中的 windows 之一期间,按下的所有键都将存储在列表中。这可能是一个愚蠢的问题,但我已经为此苦苦思索了一段时间,并且已经审查了至少 20 个堆栈溢出问题,但仍然无法解决问题。
我尝试创建自定义小部件并将其添加到我的 window。
class KeyboardWidget(QWidget):
keyPressed = pyqtSignal(str)
def keyPressEvent(self, keyEvent):
self.keyPressed.emit(keyEvent.key())
...
window.aList = []
def keyCounter():
window.aList.append(keyPressEvent)
return window.aList
if ui.screens.currentIndex() == 4:
breathCount = KeyboardWidget(window)
breathCount.setFocus()
breathCount.keyPressed.connect(keyCounter)
这或多或少是我所拥有的。我已经更改了一些小细节,但我还无法打印或 return 当我 运行 程序时按下的任何键。
你应该使用 keyEvent.text()
来获取密钥的名称,方法 key()
returns 一个整数,而且你在 keyCounter
方法中缺少一个参数接收密钥的名称:
import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QApplication
class KeyboardWidget(QWidget):
keyPressed = pyqtSignal(str)
def keyPressEvent(self, keyEvent):
self.keyPressed.emit(keyEvent.text())
class MyApplication(QApplication):
def __init__(self, args):
super().__init__(args)
self.keyList = []
self.keyboardWidget = KeyboardWidget()
self.keyboardWidget.keyPressed.connect(self.keyCounter)
self.keyboardWidget.show()
def keyCounter(self, key):
self.keyList.append(key)
print(key)
if __name__ == '__main__':
app = MyApplication(sys.argv)
sys.exit(app.exec_())
我正在用 PyQt5 设计一个实验。我想要的只是在堆叠小部件中的 windows 之一期间,按下的所有键都将存储在列表中。这可能是一个愚蠢的问题,但我已经为此苦苦思索了一段时间,并且已经审查了至少 20 个堆栈溢出问题,但仍然无法解决问题。
我尝试创建自定义小部件并将其添加到我的 window。
class KeyboardWidget(QWidget):
keyPressed = pyqtSignal(str)
def keyPressEvent(self, keyEvent):
self.keyPressed.emit(keyEvent.key())
...
window.aList = []
def keyCounter():
window.aList.append(keyPressEvent)
return window.aList
if ui.screens.currentIndex() == 4:
breathCount = KeyboardWidget(window)
breathCount.setFocus()
breathCount.keyPressed.connect(keyCounter)
这或多或少是我所拥有的。我已经更改了一些小细节,但我还无法打印或 return 当我 运行 程序时按下的任何键。
你应该使用 keyEvent.text()
来获取密钥的名称,方法 key()
returns 一个整数,而且你在 keyCounter
方法中缺少一个参数接收密钥的名称:
import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QApplication
class KeyboardWidget(QWidget):
keyPressed = pyqtSignal(str)
def keyPressEvent(self, keyEvent):
self.keyPressed.emit(keyEvent.text())
class MyApplication(QApplication):
def __init__(self, args):
super().__init__(args)
self.keyList = []
self.keyboardWidget = KeyboardWidget()
self.keyboardWidget.keyPressed.connect(self.keyCounter)
self.keyboardWidget.show()
def keyCounter(self, key):
self.keyList.append(key)
print(key)
if __name__ == '__main__':
app = MyApplication(sys.argv)
sys.exit(app.exec_())