这是我的keyPressEvent
def keyPressEvent(self , e):
key = e.key()
if key == QtCore.Qt.Key_Escape:
self.close()
elif key == QtCore.Qt.Key_A:
print 'Im here'
但是,如果我单击A,它不会打印。但是,如果我单击Escape,则窗口将关闭。哪里出问题了?
编辑:
基本上,我有一个带有lineedit和按钮的窗口。我想通过单击Enter将按钮链接到功能,让我们说有趣。这是我的代码
import sys
from PyQt4 import QtGui , QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example , self).__init__()
self.window()
def window(self):
self.setWindowTitle('Trial')
self.layout = QtGui.QGridLayout()
self.text = QtGui.QLineEdit()
self.first = QtGui.QPushButton('Button')
self.layout.addWidget(self.text , 0 , 0)
self.layout.addWidget(self.first , 1 , 0)
self.setLayout(self.layout)
self.first.clicked.connect(self.fun)
self.show()
def fun(self):
//do something
def keyPressEvent(self , e):
key = e.key()
if key == QtCore.Qt.Key_Escape:
self.close()
elif key == QtCore.Qt.Key_Enter:
self.fun()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我稍后会添加更多键。但是除了Escape之外,其他任何一个都无法正常工作
最佳答案
您要查找的方法称为keyPressEvent
,而不是KeyPressEvent
。
您的QLineEdit
似乎正在窃取您的KeyPress
事件。如果只需要处理行编辑中的回车键,则可以将returnPressed
信号连接到self.fun
:
self.text.returnPressed.connect(self.fun) # in PySide
否则,您将不得不弄乱event filters。稍后我将尝试发布一些代码。
您的最终编辑使其更加清晰。您可以放下
keyPressEvent
并使用:self.text.returnPressed.connect(self.fun)
self.button.clicked.connect(self.fun)
原来这是一个多么混乱的答案:)
关于python - QtCore.Qt.Key_似乎不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13399598/